Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 3

Сохранение плейлиста в XML файл

19.11.2012, 21:06. Показов 5627. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, сохранить плейлист в xml файл на c#.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2012, 21:06
Ответы с готовыми решениями:

Сделать сохранение плейлиста в файл
Приветствую. Подскажите, как сделать сохранение плейлиста в файл, чтобы потом его можно было открыть? Программа ниже в архиве.

Парсинг плейлиста формата M3U. Несколько разных вариантов плейлиста
Есть такой формат m3u По крайней мере знаю, что этот формат создаёт WinAmp и вроде медиаплеер. Я скачал несколько плелистов разных, один...

Сохранение XML в текстовый файл.
Хочу сохранить XML-файл построчно в текстовый, типа .INI . Что можете посоветовать? Или по другому, как можно прочитать построчно...

27
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
31.01.2014, 22:43
Студворк — интернет-сервис помощи студентам
На какой строке это?

Добавлено через 20 секунд
Хотя не так. В какой метод смотреть. Строки после правки могут отличаться.
0
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
31.01.2014, 22:44
Здесь:
C#
1
2
3
4
5
6
7
8
 private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (listBox1.SelectedIndex >= 0)
            {
                string file = PlayList[listBox1.SelectedIndex].Name;
                axWindowsMediaPlayer1.URL = paths[listBox1.SelectedIndex];
            }
        }
В строке:
C#
1
  string file = PlayList[listBox1.SelectedIndex].Name;
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
31.01.2014, 23:04
Держи. Вся проблема, что ты пытаешься воспроизвести файл либо не по полному пути к нему, а чисто по названию файла, либо сохраняешь в плейлист не полные пути к файлам, а их названия. В общем, я бы на твоём месте всё подрихтовал там, убрал бы лишнее и т.д.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.AudioVideoPlayback;
using System.IO;
 
namespace MediaPlayer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
        }
 
 
        //------------------------ГЛОБАЛЬНІ ЗМІННІ-------------------------//
        readonly List<AudioFile> _playList = new List<AudioFile>(); //поточний список файлів(плейліст)
        string[] paths, files;
        //-----------------------------------------------------------------//
 
        private void toolStripButton7_Click(object sender, EventArgs e)
        {
            Form3 f1 = new Form3();
            f1.Show();
        }
 
        private void toolStripButton8_Click(object sender, EventArgs e)
        {
            Form2 f1 = new Form2();
            f1.Show();
        }
 
        private void openFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //процедура відкриття файлу та додавання його в плейліст
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.InitialDirectory = Environment.SpecialFolder.MyMusic.ToString();
            dialog.Filter = "mp3 files|*.mp3|All files (*.*)|*.*";
            dialog.FilterIndex = 1;
            dialog.Multiselect = true;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                Audio newAudio = new Audio(dialog.FileName);
                System.IO.FileInfo file = new System.IO.FileInfo(dialog.FileName);
                long size = file.Length;
                AudioFile newFile = new AudioFile(Path.GetDirectoryName(dialog.FileName), dialog.FileName, newAudio.Duration, size);
                //listBox1.Items.Add(Path.GetFileNameWithoutExtension(dialog.FileName));//додавання в лістбокс
                _playList.Add(newFile);//додавання в плейліст
                //переведення курсору на новий елемент
 
                files = dialog.SafeFileNames;
                paths = dialog.FileNames;
                listBox1.Items.Clear();
                for (int i = 0; i < files.Length; i++)
                {
                    listBox1.Items.Add((i + 1).ToString() + " . " + files[i]);
                }
                listBox1.SelectedIndex = listBox1.Items.Count - 1;
            }
        }
 
        private void Add_Click(object sender, EventArgs e)
        {
            /*   var dlg = new Microsoft.Win32.OpenFileDialog
               {
                   DefaultExt = ".mp3",
                   Multiselect = true,
                   Filter = "Music Files|*.mp3|All Files (*.*)|*.*",
                   CheckFileExists = true
               };
 
               if (dlg.ShowDialog(this) == true)
               {
                   foreach (String file in dlg.FullName)
                   {
                       var fullName = dlg.FullName;
 
                       media.Source = new Uri(fullName);
 
                       listBox1.Items.Add(media.Source);
                   }
               } */
        }
        private void exitToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        }
 
        private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (listBox1.SelectedIndex >= 0)
            {
                string file = _playList[listBox1.SelectedIndex].Path;
                axWindowsMediaPlayer1.URL = file;
            }
 
        }
 
        private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e)
        {
 
        }
 
        private void deleteFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            /*  string delrlm = listBox1.SelectedIndex;
              if (MessageBox.Show("Вы точно хотите удалить " + delrlm + "?", "Info", MessageBoxButtons.YesNo) == DialogResult.Yes)
              {
                  listBox1.Items.Remove(delrlm);
              }*/
 
            axWindowsMediaPlayer1.URL = "";
            listBox1.Items.Remove(listBox1.SelectedItem);
        }
 
        private void nextToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
 
        }
 
        private void backTrekToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.SelectedIndex = (listBox1.SelectedIndex + 1) % listBox1.Items.Count;
            if (listBox1.SelectedIndex >= 0)
            {
                axWindowsMediaPlayer1.URL = paths[listBox1.SelectedIndex];
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            listBox1.SelectedIndex = (listBox1.SelectedIndex - 1) % listBox1.Items.Count;
            if (listBox1.SelectedIndex >= 0)
            {
                axWindowsMediaPlayer1.URL = paths[listBox1.SelectedIndex];
            }
        }
 
        private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            SaveFileDialog save = new SaveFileDialog();
            save.Title = "Save playlist";
            save.Filter = "(*.m3u)|*.m3u";
            save.RestoreDirectory = true;
            if (save.ShowDialog() == DialogResult.OK)
            {
                var files = _playList.Select(audio => audio.Path);
 
                SavePlaylist(save.FileName, files);
            }
        }
 
        private void SavePlaylist(string playlistFile, IEnumerable<string> musicFiles)
        {
            using (StreamWriter sw = new StreamWriter(playlistFile))
            {
                sw.WriteLine("#EXTM3U");
                foreach (string musicFile in musicFiles)
                {
                    sw.WriteLine(musicFile);
                }
            }
        }
 
        private void openToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            open.Title = "Open playlist";
            open.Filter = "(*.m3u)|*.m3u";
            open.RestoreDirectory = true;
            if (open.ShowDialog() == DialogResult.OK)
            {
                listBox1.Items.Clear();
                using (StreamReader file = new StreamReader(open.FileName))
                {
                    string line;
                    while ((line = file.ReadLine()) != null)
                    {
                        if (line[0] != '#')
                        {
                            string fileName = Path.GetFileName(line);
                            _playList.Add(new AudioFile(line, fileName, 0d, 0d));
                            listBox1.Items.Add(fileName);
                        }
                    }
                }
            }
        }
 
        private void openDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            FolderBrowserDialog dialog = new FolderBrowserDialog();
 
            if (dialog.ShowDialog() == DialogResult.OK)
                foreach (string fileName in Directory.EnumerateFiles(dialog.SelectedPath, "*.mp3"))
                {
                    //Audio newAudio = new Audio(fileName);
                    FileInfo file = new FileInfo(fileName);
                    long size = file.Length;
                    AudioFile newFile = new AudioFile(fileName, file.Name, 0d/*newAudio.Duration*/, size);
                    _playList.Add(newFile);//додавання в плейліст
 
                }
 
            files = new string[_playList.Count];
            int i;
            for (i = 0; i < _playList.Count; i++)
            {
                files = _playList.Select((audioFile) => audioFile.Name).ToArray();
                paths = _playList.Select((audioFile) => audioFile.Path).ToArray();
            }
 
            listBox1.Items.Clear();
            for (i = 0; i < files.Length; i++)
            {
                listBox1.Items.Add((i + 1).ToString() + " . " + files[i]);
            }
            listBox1.SelectedIndex = listBox1.Items.Count - 1;
        }
 
        private void exitToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
        }
    }
}
0
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
01.02.2014, 00:13
Что-то у меня перестала вообще музыка проигрыватся( в ошибках есть предупреджение WMPLib (файл wmp.dll)

Добавлено через 6 минут
и что самое главное, когда я открываю целую папку и сохраняю в .M3U то потом он открывается и все играет. Но когда я хочу открыть один или несколько файлов то они даже не проигриваются.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
01.02.2014, 00:30
Завтра уже скину чуть допиленное, если будет актуально.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
01.02.2014, 10:59
В общем, я чуть подрефакторил твой код, совсем немного, но уже в разы лучше, чем было. Извлёк методы, код которых дублировался. Вообще, нигде не дублируй код, всё что повторяется и делает какое-то одно осмысленное действие выноси в отдельные методы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
        private void ToNextTrack()
        {
            playlistListBox.SelectedIndex = (playlistListBox.SelectedIndex + 1) % playlistListBox.Items.Count;
            if (playlistListBox.SelectedIndex >= 0)
            {
                axWindowsMediaPlayer1.URL = _paths[playlistListBox.SelectedIndex];
            }
        }
 
        private void ToPreviousTrack()
        {
            playlistListBox.SelectedIndex = (playlistListBox.SelectedIndex - 1) % playlistListBox.Items.Count;
            if (playlistListBox.SelectedIndex >= 0)
            {
                axWindowsMediaPlayer1.URL = _paths[playlistListBox.SelectedIndex];
            }
        }
 
        private void SavePlaylist(string playlistFile, IEnumerable<AudioFile> musicFiles)
        {
            using (StreamWriter sw = new StreamWriter(playlistFile))
            {
                sw.WriteLine("#EXTM3U");
                foreach (AudioFile audioFile in musicFiles)
                {
                    sw.WriteLine(audioFile);
                }
            }
        }
 
        private static AudioFile GetAudioFile(string fileName)
        {
            FileInfo file = new FileInfo(fileName);
            Audio audio = new Audio(fileName);
            AudioFile audioFile = new AudioFile(fileName, file.Name, audio.Duration, file.Length);
            audio.Dispose();
            return audioFile;
        }
Я там ещё переименовал почти всё в нормальные имена, а не litbox1, Form1, Form2 и т.д.
Поэтому придётся качать проект. Надеюсь я не зря время тратил.
Вложения
Тип файла: zip MediaPlayer.zip (362.4 Кб, 15 просмотров)
1
6 / 2 / 0
Регистрация: 19.01.2012
Сообщений: 157
01.02.2014, 14:19
Если открывать целую папку с музыкой то все нормально. Но если я открываю несколько композиций, то первая в плейлисте проигривается, а вторая и следующие нет (ошибка: Index was out of range. Must be non-negative and less than the size of the collection)в строке:
C#
1
 string file = _playList[playlistListBox.SelectedIndex].FullName;
Добавлено через 38 секунд
и это в вашем проекте и в моем(
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
01.02.2014, 14:23
Ты вообще отладкой пользуешься? Ставь точки останова и проверяй, где и что не так. Я же не буду за тебя программу писать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.02.2014, 14:23

Сохранение данных из таблицы в xml-файл
Здравствуйте. При попытке сохранить данные из dataGriedView в xml-файл при помощи XmlWriter, выходит ошибка:Ссылка на объект не указывает...

Сохранение данных из DataGridView в файл XML
Доброе утро бойцы.... Сохраняю я значится данные из DATAgrid в файл txt и xml.... с тхт всё отлично.... а вот в xml всё сохраняется...

Сохранение объектов класса в Xml файл
нужно сохранить значение классов в xml файл описание одного из классов class AnimalTip { private string _name_tip;...

Сохранение плейлиста
if (sourceFileSaveFileDialog.ShowDialog() == DialogResult.OK) { try { ...

Сохранение плейлиста
Доброго времени суток! Я решил написать аудио проигрыватель (знаю, изобретаю велосипед) и возникла проблема - не знаю, как можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru