gpt4 book ai didi

file-io - 如何读取文件并写入文本文件?

转载 作者:行者123 更新时间:2023-12-03 00:37:33 24 4
gpt4 key购买 nike

我想打开mis文件,复制所有数据并写入文本文件。

我的错误文件。

文件名 – 1.mis

M3;3395;44;0;1;;20090404;094144;8193;3;0;;;;
M3;3397;155;0;2;;20090404;105941;8193;3;0;;;;
M3;3396;160;0;1;;20090404;100825;8193;3;0;;;;
M3;3398;168;0;2;;20090404;110106;8193;3;0;;;;

等等...,

以上数据应出现在具有相同文件名 (1.txt) 的文本文件中。

我尝试了这段代码。

Dim sFileText As String
Dim iFileNo As Integer
iFileNo = FreeFile
Open "C:\Clients\Converter\Clockings.mis" For Input As #iFileNo
Do While Not EOF(iFileNo)
Input #iFileNo, sFileText
Loop
Close #iFileNo

Open "C:\Clients\Converter\2.txt" For Output As #iFileNo
Do While Not EOF(iFileNo)
Write #iFileNo, sFileText
Loop
Close #iFileNo

1.txt 中未保存任何内容。

最佳答案

使用 Windows 上默认安装的脚本运行时要容易得多

只需转到项目引用并选中 Microsoft Scripting Runtime,然后单击“确定”。

然后你可以使用这个比默认文件命令更好的代码

Dim FSO As FileSystemObject
Dim TS As TextStream
Dim TempS As String
Dim Final As String
Set FSO = New FileSystemObject
Set TS = FSO.OpenTextFile("C:\Clients\Converter\Clockings.mis", ForReading)
'Use this for reading everything in one shot
Final = TS.ReadAll
'OR use this if you need to process each line
Do Until TS.AtEndOfStream
TempS = TS.ReadLine
Final = Final & TempS & vbCrLf
Loop
TS.Close

Set TS = FSO.OpenTextFile("C:\Clients\Converter\2.txt", ForWriting, True)
TS.Write Final
TS.Close
Set TS = Nothing
Set FSO = Nothing

至于您的原始代码有什么问题,您正在阅读文本文件的每一行。

Input #iFileNo, sFileText

然后在这里写出来

Write #iFileNo, sFileText

sFileText 是一个字符串变量,因此每次读取时,只需将 sFileText 的内容替换为刚刚读取的行的内容。

所以当你把它写出来时,你所写的只是你读到的最后一行,这可能是一个空行。

Dim sFileText As String
Dim sFinal as String
Dim iFileNo As Integer
iFileNo = FreeFile
Open "C:\Clients\Converter\Clockings.mis" For Input As #iFileNo
Do While Not EOF(iFileNo)
Input #iFileNo, sFileText
sFinal = sFinal & sFileText & vbCRLF
Loop
Close #iFileNo

iFileNo = FreeFile 'Don't assume the last file number is free to use
Open "C:\Clients\Converter\2.txt" For Output As #iFileNo
Write #iFileNo, sFinal
Close #iFileNo

请注意,您不需要执行循环来编写。 sFinal 包含准备一次性写入的文件的完整文本。请注意,输入一次读取一行,因此附加到 sFinal 的每一行都需要在末尾附加 CR 和 LF,以便在 MS Windows 系统上正确写出。其他操作系统可能只需要 LF (Chr$(10))。

如果您需要处理传入的数据,那么您需要执行类似的操作。

Dim sFileText As String
Dim sFinal as String
Dim vTemp as Variant
Dim iFileNo As Integer
Dim C as Collection
Dim R as Collection
Dim I as Long
Set C = New Collection
Set R = New Collection

iFileNo = FreeFile
Open "C:\Clients\Converter\Clockings.mis" For Input As #iFileNo
Do While Not EOF(iFileNo)
Input #iFileNo, sFileText
C.Add sFileText
Loop
Close #iFileNo

For Each vTemp in C
Process vTemp
Next sTemp

iFileNo = FreeFile
Open "C:\Clients\Converter\2.txt" For Output As #iFileNo
For Each vTemp in R
Write #iFileNo, vTemp & vbCRLF
Next sTemp
Close #iFileNo

关于file-io - 如何读取文件并写入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1404758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com