51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2336|回复: 15
打印 上一主题 下一主题

[原创] 如何更改文件

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-17 18:04:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教大家如何在qtp中更改文件内容呢?

c:\abc.txt

原来是
####
orcal=true
####

####
#MySQL=true
#####

改为
####
#orcal=true
####

####
MySQL=true
#####

谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-8-17 18:08:05 | 只看该作者
自己写脚本嘞
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-8-17 18:18:54 | 只看该作者
这个看来得要实现插入文本和删除文本的功能,期待高手的从天而降
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-8-17 20:19:35 | 只看该作者
读和写有点问题啊...郁闷死了,弄了2小时没有什么进展.
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-8-17 20:49:13 | 只看该作者
谢谢斑竹帮忙sdlkfj6
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-8-17 21:05:03 | 只看该作者
原帖由 vaguely 于 2007-8-17 18:04 发表
请教大家如何在qtp中更改文件内容呢?

c:\abc.txt

原来是
####
orcal=true
####

####
#MySQL=true
#####

改为
####
#orcal=true
####

####
MySQL=true
#####

谢谢!


这两天正在试用VbsEdit,发现里面有好多代码范例。找了一段关于文本文件操作的代码改了改,不知道能不能满足要求。

  1. strFileName = "C:\test.txt"
  2. Set objFS = CreateObject("Scripting.FileSystemObject")
  3. '读出文件内容
  4. Set objTS = objFS.OpenTextFile(strFileName, 1)
  5. strContents = objTS.ReadAll
  6. objTS.Close

  7. '将文件内容转换为数组,逐行读出后根据需要进行修改并写会文件中
  8. arrLines  = Split(strContents, vbNewLine)
  9. Set objTS = objFS.OpenTextFile(strFileName, 2)
  10. For i = 0 To UBound(arrLines)
  11.     If InStr(1, arrLines(i), "orcal", 1) > 0 Then
  12.         arrLines(i) = "#orcal=true"
  13.     End If
  14.     If InStr(1, arrLines(i), "MySQL", 1) > 0 Then
  15.         arrLines(i) = "MySQL=true"
  16.     End If       
  17.     objTS.WriteLine arrLines(i)
  18. Next
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-8-18 00:30:18 | 只看该作者
谢谢,我会试试
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-8-18 01:44:01 | 只看该作者

回复 #1 vaguely 的帖子

这种问题,简单点的,就是把整个文件内容读入字符串里,修改字符串内容,然后再把整个字符串覆盖写入原文件!

当然这个文件不能太大,几百M的就不好用这种方法了!
只能同时建立一个临时文件,然后读原文件一行内容,处理一下,然后写入临时文件。
这样循环处理每一行,直到全部处理完。再用临时文件覆盖原文件!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-8-18 16:15:50 | 只看该作者
用楼上的办法是可以的,不过感觉笨了,有没有别的办法呢?

方法如下:
  1. Function Replace_str(oldstr,newstr)
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Set MyFilebak = fso.CreateTextFile("c:\testbak.txt", True)
  4. MyFilebak.close
  5. Set CreFile = fso.GetFile("c:\test.txt")
  6. CreFile.Copy ("c:\testbak.txt")
  7. Set MyFilebak=fso.OpenTextFile("c:\testbak.txt", 1, false)
  8. Set theFile = fso.OpenTextFile("c:\test.txt", 2, True)
  9. Do While MyFilebak.AtEndOfStream <> True
  10.       retstring = MyFilebak.ReadLine
  11.           If retstring=oldstr Then
  12.                   theFile.WriteLine newstr

  13.                   else
  14.                             theFile.WriteLine retstring
  15.           End If

  16.    Loop
  17.    MyFilebak.close
  18. Set DelFile = fso.GetFile("c:\testbak.txt")
  19. DelFile.Delete
  20.    theFile.Close
  21.    ReadEntireFile = retstring
  22. End Function

  23. Call Replace_str("#orcal=true","orcal=true")
  24. Call Replace_str("MySQL=true","#MySQL=true")
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-8-18 21:05:34 | 只看该作者
原帖由 风过无息 于 2007-8-18 16:15 发表
用楼上的办法是可以的,不过感觉笨了,有没有别的办法呢?

方法如下:
Function Replace_str(oldstr,newstr)
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFilebak = fso.CreateTextFile("c: ...


晕,你这不就是我说的第二种方法嘛
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-8-18 22:39:40 | 只看该作者
不好意思,表诉不清楚,我的意思是你用的思路来实现了,但是希望有更好的方法.

昨天我实验的思路是每行读出来,遇到需要改的再写,不过没有实现呢.
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-8-19 00:33:36 | 只看该作者
部分改写文件内容的操作,不是很好处理的,还是另写到临时文件的比较简单!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-8-19 01:37:11 | 只看该作者
谢谢楼上各位的回答。我在试上面的方法。可是其实我要改的文件是.propertise的。
为什么qtp找不到 c:\test.preopertise文件呢?
对于c:\test.txt确可以找到。请大家再继续帮帮我吧。非常感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-8-19 10:32:27 | 只看该作者
不好意思,我的问题是我自己写错了文件名造成的sdlkfj5 。现在文件可以被打开了。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    15#
    发表于 2007-8-19 13:29:37 | 只看该作者
    原帖由 vaguely 于 2007-8-19 10:32 发表
    不好意思,我的问题是我自己写错了文件名造成的sdlkfj5 。现在文件可以被打开了。

    测试一定要细心、细心、再细心!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2007-8-19 20:08:09 | 只看该作者
    sdlkfj1  谢谢斑竹!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-9 10:24 , Processed in 0.074313 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表