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

File io 如何读取文件并写入文本文件?,file-io,vb6,File Io,Vb6,我想打开mis文件,复制所有数据并写入文本文件 Input #iFileNo, sFileText 我的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;;;

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

Input #iFileNo, sFileText
我的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中未保存任何内容

FileCopy "1.mis", "1.txt"

如果要逐行执行,请执行以下操作:

Dim sFileText As String
Dim iInputFile As Integer, iOutputFile as integer

iInputFile = FreeFile
Open "C:\Clients\Converter\Clockings.mis" For Input As #iInputFile 
iOutputFile = FreeFile
Open "C:\Clients\Converter\2.txt" For Output As #iOutputFile 
Do While Not EOF(iInputFile)
   Line Input #iInputFile , sFileText
   ' sFileTextis a single line of the original file
   ' you can append anything to it before writing to the other file
   Print #iOutputFile, sFileText 
Loop
Close #iInputFile 
Close #iOutputFile 

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

只需转到“项目参考”并检查Microsoft脚本运行时,然后单击“确定”

然后您可以使用这段代码,它比默认的文件命令要好得多

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

嗯,如果您的mis文件将其数据存储为文本,您可以将该文件复制到1.txt…:-)1.txt中没有任何内容,因为您正在写入2.txt…请参阅,@Gopal:上面的相同数据应显示在具有相同内容的文本文件中。他/她需要一个文件副本。@Khenu-在一个源文件中有n行,如何生成代码?文件副本正在工作,假设我想在目标文本文件中添加一些内容,如何生成代码。一些用户计算机没有FileSystemObject(我经历过这个)。我认为过于热心的IT部门有时会因为害怕病毒而践踏脚本运行时,这就是为什么您应该将其作为安装的一部分。然后,sysop可以决定是否为应用程序创建异常。或者让您自己的版本包装本机函数或包装.NET等效文件。在我看来,这两个都是过分的。