51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] 如何更改文件

[复制链接]

该用户从未签到

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

c:\abc.txt

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

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

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

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

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

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

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

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

    使用道具 举报

    该用户从未签到

    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: ...


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

    使用道具 举报

    该用户从未签到

    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")
    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    回复 #1 vaguely 的帖子

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

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

    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
    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-9 06:25 , Processed in 0.074346 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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