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

前端之家收集整理的这篇文章主要介绍了file-io – 如何读取文件并写入文本文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想打开mis文件,复制所有数据并写入文本文件.

我的错文件.

文件名 – 1.mis

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

等……

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

我试过这段代码.

  1. Dim sFileText As String
  2. Dim iFileNo As Integer
  3. iFileNo = FreeFile
  4. Open "C:\Clients\Converter\Clockings.mis" For Input As #iFileNo
  5. Do While Not EOF(iFileNo)
  6. Input #iFileNo,sFileText
  7. Loop
  8. Close #iFileNo
  9.  
  10. Open "C:\Clients\Converter\2.txt" For Output As #iFileNo
  11. Do While Not EOF(iFileNo)
  12. Write #iFileNo,sFileText
  13. Loop
  14. Close #iFileNo

1.txt中没有保存任何内容.

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

只需转到项目参考并检查Microsoft Scripting Runtime并单击“确定”.

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

  1. Dim FSO As FileSystemObject
  2. Dim TS As TextStream
  3. Dim TempS As String
  4. Dim Final As String
  5. Set FSO = New FileSystemObject
  6. Set TS = FSO.OpenTextFile("C:\Clients\Converter\Clockings.mis",ForReading)
  7. 'Use this for reading everything in one shot
  8. Final = TS.ReadAll
  9. 'OR use this if you need to process each line
  10. Do Until TS.AtEndOfStream
  11. TempS = TS.ReadLine
  12. Final = Final & TempS & vbCrLf
  13. Loop
  14. TS.Close
  15.  
  16. Set TS = FSO.OpenTextFile("C:\Clients\Converter\2.txt",ForWriting,True)
  17. TS.Write Final
  18. TS.Close
  19. Set TS = Nothing
  20. Set FSO = Nothing

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

  1. Input #iFileNo,sFileText

然后在这里写出来

  1. Write #iFileNo,sFileText

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

所以当你去写出来的时候,你所写的就是你读的最后一行,这可能是一个空白行.

  1. Dim sFileText As String
  2. Dim sFinal as String
  3. Dim iFileNo As Integer
  4. iFileNo = FreeFile
  5. Open "C:\Clients\Converter\Clockings.mis" For Input As #iFileNo
  6. Do While Not EOF(iFileNo)
  7. Input #iFileNo,sFileText
  8. sFinal = sFinal & sFileText & vbCRLF
  9. Loop
  10. Close #iFileNo
  11.  
  12. iFileNo = FreeFile 'Don't assume the last file number is free to use
  13. Open "C:\Clients\Converter\2.txt" For Output As #iFileNo
  14. Write #iFileNo,sFinal
  15. Close #iFileNo

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

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

  1. Dim sFileText As String
  2. Dim sFinal as String
  3. Dim vTemp as Variant
  4. Dim iFileNo As Integer
  5. Dim C as Collection
  6. Dim R as Collection
  7. Dim I as Long
  8. Set C = New Collection
  9. Set R = New Collection
  10.  
  11. iFileNo = FreeFile
  12. Open "C:\Clients\Converter\Clockings.mis" For Input As #iFileNo
  13. Do While Not EOF(iFileNo)
  14. Input #iFileNo,sFileText
  15. C.Add sFileText
  16. Loop
  17. Close #iFileNo
  18.  
  19. For Each vTemp in C
  20. Process vTemp
  21. Next sTemp
  22.  
  23. iFileNo = FreeFile
  24. Open "C:\Clients\Converter\2.txt" For Output As #iFileNo
  25. For Each vTemp in R
  26. Write #iFileNo,vTemp & vbCRLF
  27. Next sTemp
  28. Close #iFileNo

猜你在找的VB相关文章