Создание файлов фиксированной ширины из строк - PullRequest
1 голос
/ 18 ноября 2011

Я искал высоко и низко в интернете и не могу найти прямой ответ на это! У меня есть файл, содержащий около 100 000 символов в одной длинной строке.

Мне нужно прочитать этот файл и снова записать его полностью, в строках длиной 102 символа, заканчивающихся на VbCrLf. Разделителей нет.

Я думал, что есть несколько способов решения подобных проблем в VB Script ... но видимо нет!

Может ли кто-нибудь предоставить мне указатель?

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Вот кое-что (от макушки головы - не проверено!), Которое должно помочь вам начать.

Const ForReading = 1
Const ForWriting = 2
Dim sNewLine

Set fso = CreateObject("Scripting.FileSystemObject")
Set tsIn = fso.OpenTextFile("OldFile.txt", ForReading)  ' Your input file
Set tsOut = fso.OpenTextFile("NewFile.txt", ForWriting) ' New (output) file

While Not tsIn.AtEndOfStream              ' While there is still text
  sNewLine = tsIn.Read(102)               ' Read 120 characters
  tsOut.Write sNewLine & vbCrLf         ' Write out to new file + CR/LF
Wend                                    ' Loop to repeat

tsIn.Close
tsOut.Close
0 голосов
/ 18 ноября 2011

Я не буду рассказывать о чтении файлов, так как это то, что вы можете найти везде. И так как я годами кодировал в vb или vbscript, я надеюсь, что кода .net будет достаточно.

псевдо: чтение строки из файла, вставка, например, строки (производительность кого-нибудь беспокоит?). Простой алгоритм будет, и это может иметь проблемы с производительностью (многопоточность, параллельное может быть решением):

Public Sub foo()
    Dim strLine As String = "foo²"
    Dim strLines As List(Of String) = New List(Of String)
    Dim nrChars = strLine.ToCharArray.Count
    Dim iterations = nrChars / 102

    For i As Integer = 0 To iterations - 1
        strLines.Add(strLine.Substring(0, 102))
        strLine = strLine.Substring(103)
    Next

    'save it to file
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...