Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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
Do
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 filePath As String = "C:\Test.txt"
        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:

    Dim Data As String = My.Computer.FileSystem.ReadAllText("c:\boot.ini";)


Опционально можно указать и кодировку:

    Dim Data As String = My.Computer.FileSystem.ReadAllText("c:\boot.ini", System.Text.Encoding.UTF8)


Под 1.1 подходит вариант описаный в 4, можно даже проще сделать:

    Dim SR As New IO.StreamReader("c:\boot.ini";)
    Console.WriteLine(SR.ReadToEnd)


Опять же, опционально можно указать кодировку, если есть необходимость.

Ответить

Номер ответа: 10
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #10 Добавлено: 01.07.06 03:17
Под .NET 2.0 я бы использовал пространство имен My:

    ;Dim Data As String = My.Computer.FileSystem.ReadAllText("c:\boot.ini";)

А чем метод ReadAllText пространва имен My лучше этого?
System.IO.File.ReadAllText

Ответить

Номер ответа: 11
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 01.07.06 03:21
Под 1.1 подходит вариант описаный в 4, можно даже проще сделать

И в чем здесь упрощение?
Как получить доступ к содержимому файла, после того, как ты загнал его в консольное окно?

Ответить

Номер ответа: 12
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 01.07.06 04:14
А чем метод ReadAllText пространва имен My лучше этого?
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
А он и в .NET Framework 1.1 есть?

Нет, в 1.1 метод ReadAllText не доступен. Именно поэтому я и написал другой вариант чтения данных для 1.1...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам