file-io – 如何读取文件并写入文本文件?
发布时间:2020-12-17 00:04:31 所属栏目:大数据 来源:网络整理
导读:我想打开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;
我想打开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:ClientsConverterClockings.mis" For Input As #iFileNo Do While Not EOF(iFileNo) Input #iFileNo,sFileText Loop Close #iFileNo Open "C:ClientsConverter2.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:ClientsConverterClockings.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:ClientsConverter2.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:ClientsConverterClockings.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:ClientsConverter2.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:ClientsConverterClockings.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:ClientsConverter2.txt" For Output As #iFileNo For Each vTemp in R Write #iFileNo,vTemp & vbCRLF Next sTemp Close #iFileNo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |