Страница: 1 |
Страница: 1 |
Вопрос: Открыть файл
Добавлено: 27.06.06 17:12
Автор вопроса: ASiD | ICQ: 259132473
Как с помощью .нет получить содержимое файла?
В Visual Basic 6 для этого я писал следующее:
open "file.txt" for input as #1
input #1,a$
close
msgbox a$
Как сделать подобное на .net?
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Aleks
Вопросов: 4
Ответов: 8
Профиль | | #1
Добавлено: 30.06.06 17:23
Это конечно не самый простой способ, но работает и ошибки обрабатывает.
'загрузка файла
Public function LoadFile(ByVal FileName As String) as string
Dim a1 As String
Dim Enc1 As System.Text.Encoding = System.Text.Encoding.GetEncoding(1251) 'кодировка
If FileName = "" Then
MsgBox("Ошибка: пустое имя файла."
End
End If
Text1 = ""
Try
Using sr As StreamReader = New StreamReader(FileName, Enc1)’открываем поток
a1 = ""
Do
a1 = sr.ReadLine
Text1 = Text1 + a1 + vbNewLine
Loop Until a1 Is Nothing
sr.Close()
End Using
Catch E As Exception
MsgBox("Невозможно загрузить файл'" & FileName & "'." & vbNewLine & E.Message)
End
End Try
LoadFile = Text1
End Sub
Номер ответа: 2
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #2
Добавлено: 30.06.06 20:22
a1 = sr.ReadLine
Text1 = Text1 + a1 + vbNewLine
Loop Until a1 Is Nothing
1. не легче ли читать все сразу?
2. что за сложение строк? дурь с vb6... если уж нужно соединить строки, желательней юзать "&". А если уж еще серьезней, то надо юзать StringBuilder (проверено: функции .Append и .AppendLine работают в тысячи (!) раз быстрее, чем "&"! Сам проводил тест: склеивание строк оператором "&" заняло 31500 ms, а через StringBuilder 6 (шесть!) ms).
3. End... нада крушить всю прогу?
это мое imho.
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 30.06.06 21:33
помойму у вас там есть какое-то пространство имён, в котором готовый метод итп... как-то смешно, что в нете вы по строкам чё-то там считуйте
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 30.06.06 21:36
так шо ли
Dim fs As Stream
fs = "имя файла..."
Dim sr As New StreamReader(fs)
textBox.Text = sr.ReadToEnd()
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 30.06.06 21:44
Dim fileContent As String = String.Empty
' // VS 2005
Try
fileContent = System.IO.File.ReadAllText(filePath, System.Text.Encoding.Default)
Catch ex As Exception
' // Обработка ошибок
End Try
' // VS 2003
Dim fs As System.IO.StreamReader
Try
fs = New System.IO.StreamReader(filePath, True)
fileContent = fs.ReadToEnd
Catch ex As Exception
' // Обработка ошибок
End Try
Номер ответа: 6
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #6
Добавлено: 30.06.06 21:47
Dim fs As Stream
fs = "имя файла..."
))
Ну чтож ты Stream'у строку подсовываешь?
Номер ответа: 7
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 30.06.06 21:50
HACKER
не надо учить людей плохому.. )
Номер ответа: 8
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #8
Добавлено: 30.06.06 21:56
Это последствия перехода с VB6.
Когда человек не понимает как сделать это в НЕТ, он начинает перетаскивать все убожество с 6-ки сюда...
Номер ответа: 9
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 01.07.06 02:32
Под .NET 2.0 я бы использовал пространство имен My:
Опционально можно указать и кодировку:
Под 1.1 подходит вариант описаный в 4, можно даже проще сделать:
Console.WriteLine(SR.ReadToEnd)
Опять же, опционально можно указать кодировку, если есть необходимость.
Номер ответа: 10
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #10
Добавлено: 01.07.06 03:17
 im Data As String = My.Computer.FileSystem.ReadAllText("c:\boot.ini"
А чем метод ReadAllText пространва имен My лучше этого?
Номер ответа: 11
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #11
Добавлено: 01.07.06 03:21
И в чем здесь упрощение?
Как получить доступ к содержимому файла, после того, как ты загнал его в консольное окно?
Номер ответа: 12
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #12
Добавлено: 01.07.06 04:14
System.IO.File.ReadAllText
Честное слово, впервые слышу о таком методе, никогда не знал, типа век живи, век учись...
А он и в .NET Framework 1.1 есть? А то у меня MSDN'ка покореженая, не показывает требуемые версии .NET Framework
Как получить доступ к содержимому файла, после того, как ты загнал его в консольное окно?
В том, что нет лишней строчки на создание FileStream, хотя, учитывая наличие System.IO.File.ReadAllText этот способ вообще не имеет места в 1.1
Номер ответа: 13
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #13
Добавлено: 01.07.06 11:30
Нет, в 1.1 метод ReadAllText не доступен. Именно поэтому я и написал другой вариант чтения данных для 1.1...