文件写入又出问题,请教大虾,该如何处理文件的读写???高分相赠;感激啊。。。。。。。。。。。。。。。。。。。

smartpeter 2005-12-10 10:25:17
我现在要先打开一个txt文件,
然后在循环读每一行的过程中,
再打开另外一个txt文件对它进行写入工作。
LOOP

我用了OPEN 方法,但是不能同时两个一起打开,报文件已打开错误。
我用了FSO方法,但是读出的数据好像有点问题。我打开的txt源文件全是数据,比如“0290000343”一列N行的数据。

请教该如何在读文件的同时,写入另一个文件??请教大虾!!!!!!!!!!!!!!!!!!!
...全文
196 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
smartpeter 2005-12-12
  • 打赏
  • 举报
回复
谢谢,问题解决了,我的原程序没有问题,只是读的文本文件格式不正常,所以没有正常读写。
从EXCEL导出的文件不能直接粘贴到文本中。
olonely 2005-12-11
  • 打赏
  • 举报
回复
dim fn1 as long
dim fn2 as long
fn1=freefile
fn2=freefile

open "file1.ext" for input as #fn1
open "file2.ext" for output as #fn2
do until eof(1)
line input #1,变量1
write #2,变量
loop
close

思诺赛克 2005-12-11
  • 打赏
  • 举报
回复
up
射天狼 2005-12-10
  • 打赏
  • 举报
回复
我的网站上有此类问题的源码,你可以看看。


VB资料->查询“打开和保存文件”;

====================
免费的学习交流网站,欢迎大家访问!
http://www.j2soft.cn/
Summer006 2005-12-10
  • 打赏
  • 举报
回复
要是文本文件,我也用的楼上的方法,
runquickly 2005-12-10
  • 打赏
  • 举报
回复
open "文件1" for input as #1
open "文件2" for output as #2
do while not eof(1)
line input #1,变量1
write #2,变量
loop
close
paullbm 2005-12-10
  • 打赏
  • 举报
回复
楼主看来对FSO没有用好!
强烈建议你仍用此方法!


楼主想要的无非就是文件覆盖的效果。上面几位朋友采用的是二进制文件的写操作方式,这种方法本人也用过,但发现这种文件操作方式并不好,不会覆盖。而是同样会遇到楼主所遇到的问题。

因此本人建议采用文件系统对象的方法解决此问题,方法如下:
一、为了在VB中能够正常使用文件系统对象模型,必须先选择菜单栏中的“工程”/“引用”,并在“引用”对话框中选取“Microsoft Scripting Runtime”,再单击“确定”;
二、定义自己的文件系统对象(可定义为模块级变量),格式如下:
Dim fso As New FileSystemObject, TextFile As TextStream '定义文件系统
Dim FileDir As String '定义一个存取文件路径及名称的字符串
三、对文本文件的写操作的方法:
FileDir=App.Path & "\aa.txt" '存入你想写入的文件的路径及名称
Set TextFile = fso.CreateTextFile(FileDir,True) '创建文本文件
TextFile.Write (Text1.Text) '对文件的一次性写操作
TextFile.Close '关闭文件

附:读操作方法如下:
Set TextFile = fso.OpenTextFile(FileDir) '打开文件
Text1.Text = TextFile.ReadAll '对文件的一次性读操作
TextFile.Close
northwolves 2005-12-10
  • 打赏
  • 举报
回复
推荐二进制方式:

Private Sub Command1_Click()

Dim b() As Byte, x() As String, i As Long
Open "c:\123.txt" For Binary As #1 'read
ReDim b(LOF(1))
Get #1, , b
Close #1
x = Split(StrConv(b, vbUnicode), vbCrLf) 'read to a string array
Erase b
For i = 0 To UBound(x) '逐行处理
x(i) = Trim(Mid(x(i), 3))
Next

Open "c:\456.txt" For Binary As #1 '写入到新文件
Put #1, , Join(x, vbCrLf)
Close #1
MsgBox "ok!"
End Sub
rainstormmaster 2005-12-10
  • 打赏
  • 举报
回复
//write #2,变量
可是存进去的值是有双引号的啊?怎么去掉啊??

改为:
Print #2,变量
smartpeter 2005-12-10
  • 打赏
  • 举报
回复
write #2,变量
可是存进去的值是有双引号的啊?怎么去掉啊??

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧