Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/140: Рейтинг темы: голосов - 140, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 18
1

Получить имя файла, зная полный путь

08.03.2012, 19:31. Показов 29148. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем у меня такая проблема, у меня в checkedListBox'е есть несколько путей к файлам скажем:
c:\dir1\dir2\dir\file1
c:\dir2\dir2\dir\dir\file2
c:\dir3\dir2\file3
Так вот мне нужно все три файла file1 file2 file3 скопировать допустим в c:\dir4\ , и вот в чём проблема мне нужно создать скрипт который будет разделять путь, допустим для первого случая, c:\dir1\dir2\dir\file1 разделять на c:\dir1\dir2\dir\ и file1 и записать их в разные переменные допустим файл-а, а путь-b; что бы потом использовать их в таком скрипте:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            string fileName =   a;
            string sourcePath = b;
            string targetPath = @"C:\q";
            
         
            string sourceFile = Path.Combine(sourcePath,fileName);
            string destFile = Path.Combine(targetPath, fileName);
 
           
            if (!Directory.Exists(targetPath))
            {
                Directory.CreateDirectory(targetPath);
            }
 
            
            File.Copy(sourceFile, destFile, true);

Заранее БЛАГОДАРЮ!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2012, 19:31
Ответы с готовыми решениями:

Получить имя файла, зная его полный путь
есть полный путь к файлу типа C:\Users\Миша\Desktop\Папа ДР\Учитель !\3 вопроса.xml, как мне...

Вывод имени файла, зная его полный путь
Подскажите как вывести имя файла. Много чего находил но чисто имени файла например 123.exe такого...

Найти полный путь к папке, имея только короткое имя
Как найти полный путь к папке имея только короткое имя?

Получить полный путь к файлу
Как мне получить полный путь к файлу "1.bat", который находится в той же папке что и exe-ник...

14
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
08.03.2012, 19:51 2
Может, как нибудь так
C#
1
2
3
            string S = "c:\\dir1\\dir2\\dir\\file1";
            MessageBox.Show(System.IO.Path.GetFileName(S)); //Имя файла
            MessageBox.Show(System.IO.Path.GetDirectoryName(S)); //Путь до файла
2
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
08.03.2012, 20:18 3
C#
1
2
3
4
  string S = "c:\\dir1\\dir2\\dir\\file1";
  FileInfo fi = new FileInfo(S);
  string s = S.Substring(0 , S.Length - fi.Name.Length); //Должно присвоить c:\\dir1\\dir2\\dir\\
  string S = fi.Name; // Тут будет file1
2
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 18
08.03.2012, 20:37  [ТС] 4
Цитата Сообщение от Памирыч Посмотреть сообщение
Может, как нибудь так
C#
1
2
3
            string S = "c:\\dir1\\dir2\\dir\\file1";
            MessageBox.Show(System.IO.Path.GetFileName(S)); //Имя файла
            MessageBox.Show(System.IO.Path.GetDirectoryName(S)); //Путь до файла
Благодарю, получилось , но у меня возникла другая проблема))) как не странно)), в checkedListBox'e у меня прописан путь текстом, я этого не учёл, как мне присвоить переменной S как путь, я думал пройдёт
C#
1
S=checkedListBox1.CheckedItems();
но не прошло, это возможно вообще сделать каким-нибудь другим способом?
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
08.03.2012, 20:42 5
Цитата Сообщение от wolfig Посмотреть сообщение
в checkedListBox'e у меня прописан путь текстом
В checkedListBox целый список таких путей и надо обработать только отмеченные?
0
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 18
08.03.2012, 20:45  [ТС] 6
Да, только отмеченные
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
08.03.2012, 21:25 7
wolfig, с шарпями у меня никак, но на Бейсике отмеченные элементы можно получить так:
VB.NET
1
2
3
        For I As Integer = 0 To CheckedListBox1.CheckedItems.Count - 1
            MsgBox(CheckedListBox1.CheckedItems(I))
        Next
0
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
08.03.2012, 23:08 8
Цитата Сообщение от wolfig Посмотреть сообщение
C#
1
S=checkedListBox1.CheckedItems();
но не прошло, это возможно вообще сделать каким-нибудь другим способом?
Это разве не массив?
0
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 18
09.03.2012, 20:58  [ТС] 9
Напишу как есть.. сейчас я работаю с уже известным путём допустим c:\s\test.txt и он с помощую этого кода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            string S = @"c:\s\test.txt";
            string fileName = Path.GetFileName(S);
            string sourcePath = Path.GetDirectoryName(S); 
            
            string targetPath = @"C:\q";
            
         
            string sourceFile = Path.Combine(sourcePath,fileName);
            string destFile = Path.Combine(targetPath, fileName);
 
           
            if (!Directory.Exists(targetPath))
            {
                Directory.CreateDirectory(targetPath);
            }
 
            
            File.Copy(sourceFile, destFile, true);
копирауется в папку c:\q; но моя задача заключается в том что бы программа считывала по очереди из chListBox'a отмеченные адреса расположения файла и записывала их в q; а в листбоксе хранится не адрес а текст вот мне нужно что бы в S записывался не текст а адрес, иначе ошибка, та насчёт считывания по очереди, я создам еще цикл который будет брать адреса по очереди он в принципе прост, но проблема в том что в S записывается текст, как это исправить?
0
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
09.03.2012, 21:16 10
C#
1
using System.IO;
используйте
C#
1
Path
0
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 18
09.03.2012, 21:29  [ТС] 11
C#
1
 using System.IO;
я вбил в начале, а что мне присвоить к S можете написать полностью?
0
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
10.03.2012, 12:43 12
читайте в MSDN про Path
0
107 / 107 / 9
Регистрация: 19.12.2010
Сообщений: 417
10.03.2012, 15:08 13
Про какой текст вместо адреса Вы говорите? Приведите примеры.
перебираете checkBox1.CheckedItems() в for или foreach, доставая тем самым нужные адреса, и производите с ними нужные действия.
0
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 18
10.03.2012, 15:27  [ТС] 14
Спасибо всем за помощь я сделал релиз)
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
 int slash = 0, ravno = 0, kavichki = 0;
        string s, fileName, sourcePath;
        OpenFileDialog ofd;
        StreamReader sr, sr2;
        List<string> lstOrig, lstFile;
        FolderBrowserDialog fbd;
        StreamWriter sw;
        string SkopirovannieFayli = "D:\\Burn.txt";
 
        private void btnPlst_Click(object sender, EventArgs e)
        {
            chLBSongs.Items.Clear();
 
            ofd = new OpenFileDialog();
            ofd.Filter = "Файлы плейлиста PLS|*.pls|Файлы плейлиста M3U|*.m3u|Файл WMP|*.wpl";
 
            if (ofd.ShowDialog() != DialogResult.OK)
                return;
 
            lbPlst.Text = "Имя: " + ofd.SafeFileName;
 
            sr = new StreamReader(ofd.FileName, Encoding.GetEncoding(1251));
 
            lstOrig = new List<string>();
            lstFile = new List<string>();
 
            s = sr.ReadLine();
 
            if (s.Contains("[playlist]"))
            {
                pictureBox1.Image = new Bitmap(Burn.Properties.Resources.pls);
 
                while (true)
                {
                    s = sr.ReadLine();
 
                    if (s == null)
                        break;
 
                    if (s.Contains("File"))
                    {
                        fileName = Path.GetFileName(s);
 
                        for (int i = 0; i < s.Count(); i++)
                        {
                            if (s[i] == '=') ravno = i;
                        }
 
                        lstOrig.Add(s.Substring(ravno + 1));
 
                        chLBSongs.Items.Add(fileName);
                        lstFile.Add(fileName);
                    }
                }
            }
 
            else if (s.Contains("#EXTM3U"))
            {
                pictureBox1.Image = new Bitmap(Burn.Properties.Resources.m3u);
 
                while (true)
                {
                    s = sr.ReadLine();
 
                    if (s == null)
                        break;
 
                    if (s.Contains('\\'))
                    {
                        fileName = Path.GetFileName(s);
 
                        chLBSongs.Items.Add(fileName);
 
                        lstOrig.Add(s);
 
                        lstFile.Add(fileName);
                    }
                } 
            }
 
            else if (s.Contains("wpl"))
            {
                pictureBox1.Image = new Bitmap(Burn.Properties.Resources.wpl);
 
                sr2 = new StreamReader(ofd.SafeFileName);
 
                while (true)
                {
                    s = sr2.ReadLine();
 
                    if (s == null)
                        break;
 
                    int dva = 0;
 
                    if (s.Contains("media"))
                    {
                        for (int i = 0; i < s.Count(); i++)
                        {
                            if (s[i] == '=') ravno = i;
                            if (s[i] == '"') { kavichki = i; dva++; } 
                            if (dva == 2) break;
                        }
 
                        lstOrig.Add(s.Substring((ravno + 2), (kavichki - ravno - 2)));
 
                        fileName = Path.GetFileName(s.Substring((ravno + 2), (kavichki - ravno - 2)));
 
                        chLBSongs.Items.Add(fileName);
                        lstFile.Add(fileName);
                    }
                }
                sr2.Close();
            }
            sr.Close();
        }
 
        private void btnDest_Click(object sender, EventArgs e)
        {
            fbd = new FolderBrowserDialog();
 
            if (fbd.ShowDialog() != DialogResult.OK)
                return;
 
            fbd.ShowNewFolderButton = true;
 
            label1.Text = "Путь:" + fbd.SelectedPath;
        }
 
        private void btBurn_Click(object sender, EventArgs e)
        {
            sw = new StreamWriter(SkopirovannieFayli);
 
            sw.WriteLine("Выбранные файлы:");
            sw.WriteLine();
 
            foreach (string x in chLBSongs.CheckedItems)
            {
                sw.WriteLine(x);
            }
 
            sw.Close();
 
            foreach (int x in chLBSongs.CheckedIndices)
            {
                File.Copy(lstOrig[x], Path.Combine(fbd.SelectedPath, lstFile[x]), true);
            }
 
            MessageBox.Show("Копирование завершено");
        }
Добавлено через 6 минут
Цитата Сообщение от Sudoki Посмотреть сообщение
читайте в MSDN про Path
там всё было намного проще, просто присвоить индекс из foreach к переменной которая должна содержать адрес для копирования
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
10.03.2012, 22:11 15
C#
1
2
3
4
5
6
System.IO;
 
FileInfo fi = new FileInfo(c:\dir1\dir2\dir\file1);
fi.Name - //выдаст file1
fi.FullName - //выдаст c:\dir1\dir2\dir\file1
fi.Directory - //выдаст c:\dir1\dir2\dir\
C#
1
2
3
4
FileInfo fi = new FileInfo(@"C:\Таймер.exe");
        Console.WriteLine(fi.Name);
        Console.WriteLine(fi.FullName);
        Console.WriteLine(fi.Directory);
0
10.03.2012, 22:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2012, 22:11
Помогаю со студенческими работами здесь

Если файл лежит в директории приложения, то указать его имя, в противном случае - полный путь
Добрый день! Подскажите пожалуйста, возможно ли такая схема. В файле настроек указать...

Получить Полный путь к файлу по Дескриптору
Нашел вот этот пример, а как использовать не знаю. Подскажите Пожалуйста. static extern void...

Получить полный путь перемещаемого файла
Мне нужно получить полный путь перемещаемого файла. Как я понимаю для этого нужно перехватить...

Получить полный путь папки выделенной в проводнике
Здравствуйте. Возникла такая проблема. Необходимо при клике мышкой по папке (или какому либо...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru