Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38

Создание имени файла из значения в переменной

28.02.2013, 09:35. Показов 5337. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли вообще сделать так, чтобы файл создавался с таким именем, какое значение есть в определенной переменной ? То есть, например, имею переменную vvI как String, в ней у меня прописан путь как строка, например, "C:\Text.txt". Как мне создать файл, используя значение из этой переменной ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2013, 09:35
Ответы с готовыми решениями:

Вывод на экран имени переменной(имени файла, и тд.)
Здрасти. Недалече столкнулся с проблемой: надо сравнить два файла по признаку количества содержащихся в них символов и вернуть тот что...

Вывод имени переменной, а не ее значения
Добрый день. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace List_Value_Types ...

Создание объекта по имени функции из переменной
Подскажите как сделать в JS по аналогии с php: $obj=new $classname; Т.е. так не выходит: function somefunc(){} var...

26
1652 / 715 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
28.02.2013, 11:34
В FAQ загляни, там найдешь что нужно. Как получит имя файла по пути, как получит имя файла с расширением и как создать файл.
0
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38
28.02.2013, 12:51  [ТС]
Цитата Сообщение от Release Посмотреть сообщение
В FAQ загляни, там найдешь что нужно. Как получит имя файла по пути, как получит имя файла с расширением и как создать файл.
полазил, не наткнулся..
может подскажешь где именно ? или кодом поделись... буду признателен
и еще как начать создание файла не с начала кода, а чтобы при определенных условиях записывался этот файл ?
0
1652 / 715 / 47
Регистрация: 11.03.2012
Сообщений: 1,855
Записей в блоге: 1
28.02.2013, 14:07
не смогу помочь, последнее время все с телефона сижу на форуме.
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
28.02.2013, 14:51
Создание файла:

VB.NET
1
IO.File.Create("Путь с конечным именем файла", FileMode.Create)
Чтобы создать файл с именем из переменной - пиши её вместо "Путь", т.е.:

VB.NET
1
2
Dim vvI As String = "C:\text.txt"
IO.File.Create(vvI, FileMode.Create)
Второй параметр указывает, что файл будет создан, а в случае существования - перезаписан.
Предвидя вопрос о занятости файла др.процессом:

VB.NET
1
2
Dim vvI As String = "C:\text.txt"
IO.File.Create(vvI, FileMode.Create).Dispose()
.Dispose освобождает ресурсы объекта System.IO.Stream

Что касается оапределённых условий - юзай
VB.NET
1
If ... Then ... Else
какие проблемы-то?

P.S.: И всё это в F.A.Q. есть! Смотри внимательно!
3
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38
05.03.2013, 12:40  [ТС]
спасибо большое !
насчет FAQ... может я не там смотрел ? где это написано ? я еще раз его весь просмотрел... Который Готовые решения и полезные коды на Visual Basic .NET (Часть-1)
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
05.03.2013, 12:49
Работа с файлами.
0
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38
05.03.2013, 15:09  [ТС]
Цитата Сообщение от Nachrichter Посмотреть сообщение
Что касается определённых условий - юзай
насчет этого я использую CASE

Добавлено через 2 часа 18 минут
Цитата Сообщение от Nachrichter Посмотреть сообщение
прошу прощения за наглость. Я использую для записи в файл код
VB.NET
1
IO.File.AppendAllText("куда", "что")
.
так вот, всю информацию в файл он лупит в одну строчку. Как сделать перевод строки и возврат каретки в этом случае ?
Пример:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
vpath = "C:\FILE.txt"
data1 = "Bicycle"
data2 = "Motorcycle"
data3 = "Quadrocycle"
data4 = "Car"
data5 = "Tank"
 
        IO.File.AppendAllText(vpath, data1, System.Text.Encoding.Default)
        IO.File.AppendAllText(vpath, data2, System.Text.Encoding.Default)
        IO.File.AppendAllText(vpath, data3, System.Text.Encoding.Default)
        IO.File.AppendAllText(vpath, data4, System.Text.Encoding.Default)
        IO.File.AppendAllText(vpath, data5, System.Text.Encoding.Default)
И здесь в выходном файле вся информация получается в одну строку, так : "BicycleMotorcycleQuadrocycleCarTank "
А мне нужно, чтобы получилось так : "
Bicycle
Motorcycle
Quadrocycle
Car
Tank
"

Испробовал много способов, но никак не выходит
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
05.03.2013, 16:04
Shot152, используйте vbCrLf (перенос). На примере одной строки:

VB.NET
1
IO.File.AppendAllText(vpath, data1 & vbCrLf, System.Text.Encoding.Default)
так после записи строки будет происходить переход на новую строку.
2
25 / 25 / 3
Регистрация: 10.06.2009
Сообщений: 134
05.03.2013, 20:55
Если не ошибаюсь, метод AppendAllText совершает много лишних "телодвижение" (постоянное открытие файла, всевозможные проверки доступности, запись, закрытие файла), особенно это чувствуется при большом количестве записываемых данных.

Проще юзать в таком случае класс StreamWriter:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Dim MyFile as String = "C:\трындырынды_vb.net"
Dim swMyFile As StreamWriter = New StreamWriter(MyFile ,True, System.Text.Encoding.GetEncoding(866))'True - открытие с дозаписью
 
swMyFile.WriteLine("жук")
swMyFile.WriteLine("олень")
swMyFile.WriteLine("бабОчка")
swMyFile.Close()
 
'Результат:
'жук
'олень
'бабОчка
Собсно, как вариант...
1
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38
06.03.2013, 08:42  [ТС]
я использовал этот класс, но он не очень мне подходит. Дело в том, что я создаю АИСС для техникума, для учебной части, функции программы заключаются в том, чтобы оператор мог составить расписание и изменить его, если это необходимо. Наш секретарь сейчас делает это в экселе. Задача моего проекта в том, чтобы облегчить ее задачу.
Используя класс СтримРайтер, файл единожды открывается, записывается и закрывается, а это мне не подходит, потому что постоянно происходит дозапись. Если нужны подробности концепции разработки, я могу предоставить, если Вы желаете как-то помочь.
0
25 / 25 / 3
Регистрация: 10.06.2009
Сообщений: 134
06.03.2013, 08:52
Shot152, так файл в моем примере и открывается для ДОзаписи.
В строке
VB.NET
1
Dim swMyFile As StreamWriter = New StreamWriter(MyFile ,True, System.Text.Encoding.GetEncoding(866))
происходит создание файла, если его еще нету, а если есть то открытие с дозаписью, что определяет второй параметр конструктора (после MyFile). Поставите False - файл будет перезаписываться наново.
0
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38
06.03.2013, 09:36  [ТС]
ах да... не заметил ползунок
я попробую с этим, спасибо за совет.
у меня пока другая проблема, согласитесь помочь ?
дело в том, что у меня есть входные файлы, которые создаются в другом модуле, в формате : "
$Специальность

%Дисциплина 1
%Дисциплина 2
%Дисциплина 3
...
%Дисциплина N
"
Сам файл текстовый. В другом модуле программа забирает эти созданные ранее файлы и рассовывает их в комбо-боксы. Но она, как понимаете, забирает абсолютно все строки, и пустые и специальность и дисциплины вместе со спец знаками. Мне нужно сделать так, чтобы в комбо-бокс заползали только названия дисциплин и без вспомогательных знаков %.
Делаю я сейчас так :
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Dim lessmass() As String = IO.File.ReadAllLines("TXT\FILE_with_discipline.txt", _
                                                                System.Text.Encoding.Default) 'считывание файла в переменную LESSMASS
 
'распихивание в комбо боксы
                cb1stTop.Items.AddRange(lessmass) '1 пара Верхней недели
                cb1stBot.Items.AddRange(lessmass) '1 пара Нижней недели
                cb2ndTop.Items.AddRange(lessmass) '2 пара Верхней недели
                cb2ndBot.Items.AddRange(lessmass) '2 пара Нижней недели
                cb3rdTop.Items.AddRange(lessmass) '3 пара Верхней недели
                cb3rdBot.Items.AddRange(lessmass) '3 пара Нижней недели
                cb4thTop.Items.AddRange(lessmass) '4 пара Верхней недели
                cb4thBot.Items.AddRange(lessmass) '4 пара Нижней недели
Добавлено через 17 минут
и еще кое-что... СтримРайтер же не записывает все в файл, пока его не закроет, а потом файл уже будет не открыть... У меня по кнопке "принять" данные с расписанием на день, так я сделал, заносятся все в файл... А далее в один файл для всей группы нужно составить его на шесть дней, расписание создается поденно, на каждый день составляется расписание и нажимается кнопка записи, которая "принять", чтобы продолжить работу и продолжать составлять расписание на другие дни. Но если файл закрыт после "понедельника", то как же делать "вторник" ?
0
25 / 25 / 3
Регистрация: 10.06.2009
Сообщений: 134
06.03.2013, 11:53
По первому вопросу.
Для чтения файла используй StreamReader.
Чтобы обозначить строки, которые будут грузится в определенные КомбоБоксы, добавляй в каком-то месте к ним какой либо идентификатор. Например, для первого Бокса - это будет 1птичка_кар, 1птичка_шмяк, для второго Бокса - 2зайчик_прыг и т.д.
Чтение файла такое:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Dim srReadingFile as StreamReader = New StreamReader("vb.net", System.Text.Encoding.Default)
Dim LineFromFile as String
 
While srReadingFile.Peek > -1'читаем, пока не конец файла
   LineFromFile = srReadingFile.ReadLine()
   Select Case LineFromFile.SubString(0, 1)'извлекаем первый символ строки
      Case "1"
         ComboBox1.Items.Add(LineFromFile.SubString(1)'записуем строку, пропуская первый символ
      Case "2"
         ComboBox2.Items.Add(LineFromFile.SubString(1)'записуем строку, пропуская первый символ
   End Select
End While
По второму вопросу.
После каждого вызова
VB.NET
1
swWriter.WriteLine("BZzzz")
вызов
VB.NET
1
swWriter.Flush()
сразу записывает строку из буфера в файл.
а потом файл уже будет не открыть...
Чего это?

Добавлено через 24 секунды
По первому вопросу.
Для чтения файла используй StreamReader.
Чтобы обозначить строки, которые будут грузится в определенные КомбоБоксы, добавляй в каком-то месте к ним какой либо идентификатор. Например, для первого Бокса - это будет 1птичка_кар, 1птичка_шмяк, для второго Бокса - 2зайчик_прыг и т.д.
Чтение файла такое:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Dim srReadingFile as StreamReader = New StreamReader("vb.net", System.Text.Encoding.Default)
Dim LineFromFile as String
 
While srReadingFile.Peek > -1'читаем, пока не конец файла
   LineFromFile = srReadingFile.ReadLine()
   Select Case LineFromFile.SubString(0, 1)'извлекаем первый символ строки
      Case "1"
         ComboBox1.Items.Add(LineFromFile.SubString(1)'записуем строку, пропуская первый символ
      Case "2"
         ComboBox2.Items.Add(LineFromFile.SubString(1)'записуем строку, пропуская первый символ
   End Select
End While
По второму вопросу.
После каждого вызова
VB.NET
1
swWriter.WriteLine("BZzzz")
вызов
VB.NET
1
swWriter.Flush()
сразу записывает строку из буфера в файл.
а потом файл уже будет не открыть...
Чего это?
1
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38
06.03.2013, 12:43  [ТС]
а еще... используя стрим райтер он у меня весь текст кракозябрит...
"Ђ’-65


Понедельник

Верхняя неделя Нижняя неделя
1. 1st_T %Р˜РЅС„РѕСЂРјР°С‚РёРєР° 77 1st_B %Р˜РЅС„РѕСЂРјР°С‚РёРєР° 77
2. 2nd_T %Р*СѓСЃСЃРєРёР№ язык 24 2nd_B %Физическая культура
3. 3rd_T (пусто) 3rd_B (пусто)
4. 4th_T (пусто) 4th_B (пусто)



Вторник

Верхняя неделя Нижняя неделя
1. 1st_T %Р˜РЅС„РѕСЂРјР°С‚РёРєР° 77 1st_B %Физическая культура
2. 2nd_T %Р*СѓСЃСЃРєРёР№ язык 24 2nd_B (пусто)
3. 3rd_T %Р˜РЅС„РѕСЂРјР°С‚РёРєР° 77 3rd_B (пусто)
4. 4th_T (пусто) 4th_B (пусто) "



Цитата Сообщение от Nickopoll Посмотреть сообщение
сразу записывает строку из буфера в файл.
а потом файл уже будет не открыть...
Чего это?
С этой штукой разобрался

Добавлено через 27 минут
Цитата Сообщение от Nickopoll Посмотреть сообщение
Код Visual Basic .NET

VB.NET
1
2
3
4
5
6
7
8
9
10
11
Dim srReadingFile as StreamReader = New StreamReader("vb.net", System.Text.Encoding.Default)
Dim LineFromFile as String
While srReadingFile.Peek > -1'читаем, пока не конец файла
  LineFromFile = srReadingFile.ReadLine()
  Select Case LineFromFile.SubString(0, 1)'извлекаем первый символ строки
    Case "1"
     ComboBox1.Items.Add(LineFromFile.SubString(1)'записуем строку, пропуская первый символ
   Case "2"
     ComboBox2.Items.Add(LineFromFile.SubString(1)'записуем строку, пропуская первый символ
  End Select
End While
Проблема... Выдало такую ошибку : "Index and length must refer to a location within the string. Parameter name: length"
Я написал так :
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim srReadingFile As StreamReader = New StreamReader("TXT\tmzapoln.txt", System.Text.Encoding.Default)
                Dim LineFromFile As String
 
                While srReadingFile.Peek > -1 'читаем, пока не конец файла
                    LineFromFile = srReadingFile.ReadLine()
                    Select Case LineFromFile.Substring(0, 1) 'извлекаем первый символ строки
                        Case "%"
                            'записываем строку, пропуская первый символ
                            cb1stTop.Items.Add(LineFromFile.Substring(1))
                            cb1stBot.Items.Add(LineFromFile.Substring(1))
                            cb2ndTop.Items.Add(LineFromFile.Substring(1))
                            cb2ndBot.Items.Add(LineFromFile.Substring(1))
                            cb3rdTop.Items.Add(LineFromFile.Substring(1))
                            cb3rdBot.Items.Add(LineFromFile.Substring(1))
                            cb4thTop.Items.Add(LineFromFile.Substring(1))
                            cb4thBot.Items.Add(LineFromFile.Substring(1))
                    End Select
                End While
0
25 / 25 / 3
Регистрация: 10.06.2009
Сообщений: 134
06.03.2013, 12:59
используя стрим райтер он у меня весь текст кракозябрит
Подозреваю, ты имеешь ввиду корявый текст, при открытии файла блокнотом, так?
Если так, то это объясняется тем, что по умолчанию кодировка System.Text.Encoding.Default это ANSI (могу ошибаться), а блокнот открывает в кодировке Windows - cp1251.
Вместо System.Text.Encoding.Default попробуй написать System.Text.Encoding.GetEncoding(1251) и в StreamWriter и в StreamReader.
0
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38
06.03.2013, 13:01  [ТС]
Цитата Сообщение от Nickopoll Посмотреть сообщение
Подозреваю, ты имеешь ввиду корявый текст, при открытии файла блокнотом, так?
Если так, то это объясняется тем, что по умолчанию кодировка System.Text.Encoding.Default это ANSI (могу ошибаться), а блокнот открывает в кодировке Windows - cp1251.
Вместо System.Text.Encoding.Default попробуй написать System.Text.Encoding.GetEncoding(1251) и в StreamWriter и в StreamReader.
уже пробовал, не помогает...

Мне важно, чтобы и программа и секретарь могли прочитать этот файл нормально
0
25 / 25 / 3
Регистрация: 10.06.2009
Сообщений: 134
06.03.2013, 13:15
Проблема... Выдало такую ошибку : "Index and length must refer to a location within the string. Parameter name: length"
Наткнулся на пустую строку.
Попробуй так:
VB.NET
1
2
3
4
5
6
while '....
LineFromFile = '...
if LineFromFile.Trim() <> "" then
'....
end if
end while
Добавлено через 8 минут
Shot152, где ты видишь корявый текст? в блокноте?
сама прога в любом случае будет видить текст нормально. если и при записи, и при чтении использовалась одна и та же кодировка.
0
 Аватар для Shot152
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 38
06.03.2013, 13:22  [ТС]
ок, с этим получилось... но, собака, все равно карюки получаются... хотя, заголовок пишется адекватно...
Кликните здесь для просмотра всего текста
ТМ-12 'русский язык. из комбо-бокса, который создан в редакторе как "Collection"


Понедельник 'здесь должен быть день недели, в данном случае понедельник

Верхняя неделя РќРёР¶РЅСЏСЏ неделя 'две колонки Верхняя и Нижняя неделя
1. 1st_T Физика 57 1st_B Физика 57 '1 пара верхней и нижней недель
2. 2nd_T Математика 82 2nd_B Р˜РЅС„РѕСЂРјР°С‚РёРєР° 77 '2 пара
3. 3rd_T Обществознание 85 3rd_B Физическая культура 'и 3 пара
4. 4th_T (пусто) 4th_B (пусто) '4 пары стандартно пустые, здесь написано "(пусто)"



Добавлено через 3 минуты
Цитата Сообщение от Nickopoll Посмотреть сообщение
где ты видишь корявый текст? в блокноте?
сама прога в любом случае будет видить текст нормально. если и при записи, и при чтении использовалась одна и та же кодировка.
это я понимаю. просто цель в том, чтобы это расписание можно было отредактировать вручную
0
25 / 25 / 3
Регистрация: 10.06.2009
Сообщений: 134
06.03.2013, 13:37
Shot152, давай код обеих функций - записи и чтения, и напиши чем ты смотришь файл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2013, 13:37
Помогаю со студенческими работами здесь

Использование текущего значения переменной в имени рисунка
Здравствуйте. Решил освоить VB. Практикуюсь потихоньку. Столкнулся со следующим вопросом: На форме (Form1) имеется некоторое количество...

Одновременное создание имени переменной и присваивание.Возможно?
Доброй ночи. for($i=1;$i&lt;=5;$i++) { $pageleft.$i='&lt;a href=***&gt;&lt;/a&gt;'; $pageright.$i='&lt;a href=***&gt;&lt;/a&gt;'; } Скрипт...

Создание переменной с именем из значения другой переменной
Доброго времени суток. Существует ли вообще такая возможность, как создание новой переменной из значения другой переменной? Например...

Парсинг имени файла из переменной
Здравствуйте есть такой код,он мне выдаёт полный путь к файлу, нужно нужно в переменной это обрезать, что бы осталось только имя exe...

Использование переменной как имени внешнего js-файла
Это возможно?.. хоть как-нибудь? Объясните ламеру-уу...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru