TXT文本数据txt替换回车的问题

怎么在文件中替换一行数据 - VC/MFC当前位置:& &&&怎么在文件中替换一行数据怎么在文件中替换一行数据&&网友分享于:&&浏览:278次如何在文件中替换一行数据比如test.txt中有如下数据:aaaaaa1111113333333如何实现将改txt中的111111读取出来修改成222222然后再写入test.txt中,结果为:aaaaaa2222223333333读出来是比较容易,我可以一行一行的读,可是写入该如何处理??用fwrite CFile 或者CStdioFile实现?------解决方案--------------------
你可以读出文件内容,替换后写入新文件,然后删除原文件,再改名方法不太好,可能有更简单的方法直接修改文件中一段内容VC++中文本文件替换的函数:例如把trap.log文件中的123替换成***,使用方法如下所示ReplaceText(“.\\trap.log“,”123“,”***&);int ReplaceText(CString StrFileName,CString StrFind,CString StrReplace){CStdioFile TempFile,Fint Count=0;if(!File.Open(StrFileName,CFile::modeRead))
return -1;CString StrTempFileName=File.GetFileTitle()+&.tmp&;if(!TempFile.Open(StrTempFileName,CFile::modeCreate|CFile::modeReadWrite))
return -1;CString Swhile(File.ReadString(Str)){
Count+=Str.Replace(StrFind,StrReplace);
TempFile.WriteString(Str+&\n&);}File.Close();TempFile.Close();CFile::Remove(StrFileName);CFile::Rename(StrTempFileName,StrFileName);return C}
------解决方案--------------------
C/C++ code
// VS2008 win32 console application,support MFC
#include &stdafx.h&
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
LPCTSTR pszFile = _T(&F:\\11.txt&);
file.Open(pszFile, CFile::modeRead);
CString strT
DWORD dwPos = 0;
LPCTSTR pszSrc = _T(&111111&);
LPCTSTR pszDes = _T(&222222\n&);
while(file.ReadString(strText))
if(strText == pszSrc)
dwPos = (DWORD)file.GetPosition() - (_tcslen(pszSrc) + _tcslen(_T(&\r\n&)));
file.Close();
file.Open(pszFile, CFile::modeWrite);
file.Seek(dwPos, CFile::begin);
file.WriteString(pszDes);
file.Close();
catch(CException* e)
e-&ReportError();
e-&Delete();
// 11.txt (ANSI文本文件)
程序运行之后文件内容
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有&&&&&&&&&&&&&&&&&&
posts - 30,comments - 131,trackbacks - 0
阅读排行榜
评论排行榜
&&&&&&&&这周忙的连滚带爬的,终于在周末前把项目完工了。这次主要做的是一个UDP协议的转发器,是一个纯java写的程序,没有任何的框架在里面。其中为了保留住传进来的数据,我们用TXT文本记录下这些数据。文件代码传上来,需要的朋友直接下载就可以用。
import&java.io.*;
&*&功能描述:创建TXT文件并进行读、写、修改操作
&*&@author&&a&href="mailto:zhanghhui&#"&KenZhang&/a&
&*&@version&1.0&
&*&Creation&date:&&-&下午06:48:45
public&class&ReadWriteFile&{
&&&&public&static&BufferedReader&
&&&&//指定文件路径和名称
&&&&private&static&String&path&=&"D:/suncity.txt";
&&&&private&static&&File&filename&=&new&File(path);
&&&&private&static&String&readStr&="";
&&&&/**&*//**
&&&&&*&创建文本文件.
&&&&&*&@throws&IOException&
&&&&public&static&void&creatTxtFile()&throws&IOException{
&&&&&&&&if&(!filename.exists())&{
&&&&&&&&&&&&filename.createNewFile();
&&&&&&&&&&&&System.err.println(filename&+&"已创建!");
&&&&/**&*//**
&&&&&*&读取文本文件.
&&&&public&static&String&readTxtFile(){
&&&&&&&&String&
&&&&&&&&FileReader&
&&&&&&&&try&{
&&&&&&&&&&&&fileread&=&new&FileReader(filename);
&&&&&&&&&&&&bufread&=&new&BufferedReader(fileread);
&&&&&&&&&&&&try&{
&&&&&&&&&&&&&&&&while&((read&=&bufread.readLine())&!=&null)&{
&&&&&&&&&&&&&&&&&&&&readStr&=&readStr&+&read+&"\r\n";
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}&catch&(IOException&e)&{
&&&&&&&&&&&&&&&&//&TODO&Auto-generated&catch&block
&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&}
&&&&&&&&}&catch&(FileNotFoundException&e)&{
&&&&&&&&&&&&//&TODO&Auto-generated&catch&block
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&System.out.println("文件内容是:"+&"\r\n"&+&readStr);
&&&&&&&&return&readS
&&&&/**&*//**
&&&&&*&写文件.
&&&&public&static&void&writeTxtFile(String&newStr)&throws&IOException{
&&&&&&&&//先读取原有文件内容,然后进行写入操作
&&&&&&&&String&filein&=&newStr&+&"\r\n"&+&readStr&+&"\r\n";
&&&&&&&&RandomAccessFile&mm&=&null;
&&&&&&&&try&{
&&&&&&&&&&&&mm&=&new&RandomAccessFile(filename,&"rw");
&&&&&&&&&&&&mm.writeBytes(filein);
&&&&&&&&}&catch&(IOException&e1)&{
&&&&&&&&&&&&//&TODO&自动生成&catch&块
&&&&&&&&&&&&e1.printStackTrace();
&&&&&&&&}&finally&{
&&&&&&&&&&&&if&(mm&!=&null)&{
&&&&&&&&&&&&&&&&try&{
&&&&&&&&&&&&&&&&&&&&mm.close();
&&&&&&&&&&&&&&&&}&catch&(IOException&e2)&{
&&&&&&&&&&&&&&&&&&&&//&TODO&自动生成&catch&块
&&&&&&&&&&&&&&&&&&&&e2.printStackTrace();
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&/**&*//**
&&&&&*&将文件中指定内容的第一行替换为其它内容.
&&&&&*&@param&oldStr
&&&&&*&&&&&&&&&&&&查找内容
&&&&&*&@param&replaceStr
&&&&&*&&&&&&&&&&&&替换内容
&&&&public&static&void&replaceTxtByStr(String&oldStr,String&replaceStr)&{
&&&&&&&&String&temp&=&"";
&&&&&&&&try&{
&&&&&&&&&&&&File&file&=&new&File(path);
&&&&&&&&&&&&FileInputStream&fis&=&new&FileInputStream(file);
&&&&&&&&&&&&InputStreamReader&isr&=&new&InputStreamReader(fis);
&&&&&&&&&&&&BufferedReader&br&=&new&BufferedReader(isr);
&&&&&&&&&&&&StringBuffer&buf&=&new&StringBuffer();
&&&&&&&&&&&&//&保存该行前面的内容
&&&&&&&&&&&&for&(int&j&=&<span style="color: #;&(temp&=&br.readLine())&!=&null
&&&&&&&&&&&&&&&&&&&&&&&!temp.equals(oldStr);&j++)&{
&&&&&&&&&&&&&&&&buf&=&buf.append(temp);
&&&&&&&&&&&&&&&&buf&=&buf.append(System.getProperty("line.separator"));
&&&&&&&&&&&&}
&&&&&&&&&&&&//&将内容插入
&&&&&&&&&&&&buf&=&buf.append(replaceStr);
&&&&&&&&&&&&//&保存该行后面的内容
&&&&&&&&&&&&while&((temp&=&br.readLine())&!=&null)&{
&&&&&&&&&&&&&&&&buf&=&buf.append(System.getProperty("line.separator"));
&&&&&&&&&&&&&&&&buf&=&buf.append(temp);
&&&&&&&&&&&&}
&&&&&&&&&&&&br.close();
&&&&&&&&&&&&FileOutputStream&fos&=&new&FileOutputStream(file);
&&&&&&&&&&&&PrintWriter&pw&=&new&PrintWriter(fos);
&&&&&&&&&&&&pw.write(buf.toString().toCharArray());
&&&&&&&&&&&&pw.flush();
&&&&&&&&&&&&pw.close();
&&&&&&&&}&catch&(IOException&e)&{
&&&&&&&&&&&&e.printStackTrace();
&&&&/**&*//**
&&&&&*&main方法测试
&&&&&*&&#64;param&s
&&&&&*&&#64;throws&IOException
&&&&public&static&void&main(String[]&s)&throws&IOException&{
&&&&&&&&ReadWriteFile.creatTxtFile();
&&&&&&&&ReadWriteFile.readTxtFile();
&&&&&&&&ReadWriteFile.writeTxtFile("<span style="color: #:13");
//&&&&&&&&ReadWriteFile.replaceTxtByStr("ken",&"zhang");
阅读(59887)
&发布代码时,怎么实现可伸缩节点[未登录]
我是blogjava的新用户,想问个弱弱的问题:在blogjava上发布文章时,怎么发布代码,实现函数节点可伸缩。
先谢过了哈!&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
&#64;johnsdilon
插入代码就可以了啊&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
我之前也写过一个程序,实现的功能比这个多了。
不过感觉写这样的程序还是vc比较方便&&&&&&
&re: java创建TXT文件并进行读、写、修改操作[未登录]
谢谢,呵呵&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
不错不错
要是加上文字编码的相关部分就好了,
不然各种系统编码下会有问题的
&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
&#64;冷面阎罗
VC,java,各有千秋!呵呵&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
&#64;aSTAmEI
这个文件只是用来存储数字和英文,没有存储中文的需求,所以就没做。
呵呵,惭愧的是这个程序好像写入中文后,读出来的是乱码。
&&&&&&
&re: java创建TXT文件并进行读、写、修改操作[未登录]
真好人啊&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
好像流没有关闭吧
呵呵&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
这样修改好像挺费资源的,如果文件非常的大,然而仅仅是为了修改几个单词,那岂不是读半天,能有直接定位的办法么&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
还有2个流没关闭 不会有事吧 ??&&&&&&
&re: java创建TXT文件并进行读、写、修改操作[未登录]
谢谢&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
挺了&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
FileOutputStream fos = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(fos);
pw.write(buf.toString().toCharArray());
pw.flush();
pw.close();fos 没关闭。操作频繁的东西 这样的细节不注意 会出大问题&&&&&&
&re: java创建TXT文件并进行读、写、修改操作
&re: java创建TXT文件并进行读、写、修改操作[未登录]
mm.writeBytes(filein);
改成 mm.write(filein.getBytes());乱码 就解决了&&&&&&批处理如何批量替换文件内容? - BAT求助&讨论 -
批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!
帖子6&积分17&技术0 &捐助0 &注册时间&
批处理如何批量替换文件内容?
有一个A.TXT文本文件(此文本文件的名称、路径已定),里面的内容是:ABCD= ;
有另一个N.TXT文本文件(此文本文件的为不确定的名称、路径为D般W文件夹中的某个文件夹的文本文件);N.txt文件中的很多字符串,其中有一行为:ABCD=;
A.TXT文本文件和N.TXT文本文件路径不同;
现在我请大神们帮忙写一个批处理将W文件夹中所有的*.TXT文本文件(包括子文件夹)中ABCD=****的那一行全部换成A.TXT里的内容(ABCD=);
想问一下各位大神,用批处理能实吗?可以的话能不能给小弟写一下!小弟万分感激!
帖子8208&积分36899&技术175 &捐助510 &注册时间&
@echo off
set /p str=&&D:\a.txt&
for /f &delims=& %%i in ('dir /b /s &D:\W\*.txt&') do (
& & sed -i &s/ABCD=.*/%str%/g& &%%i&
)复制代码命令行工具 sed.exe 下载地址:
【批处理在线视频分享】
【论坛捐助】
【论坛官方QQ群】BAT群:& &VBS群:
帖子8208&积分36899&技术175 &捐助510 &注册时间&
好像不能实现,能不能帮忙再看一下呢?
请把你的测试用例和测试结果发出来看看。
直接回帖就行,不要给我发私信了。
【批处理在线视频分享】
【论坛捐助】
【论坛官方QQ群】BAT群:& &VBS群:
帖子6&积分17&技术0 &捐助0 &注册时间&
不好意思!我是说你提供给我的代码不能实现我上面表达出来的效果!
帖子6&积分17&技术0 &捐助0 &注册时间&
bat-Batcher,不好意思!我刚刚又试了一下,还是有点问题,A文本中的ABCD=替换到N.txt文件中ABCD=时,N.txt文件中的还保留着;我希望是能把N.txt文件中ABCD=全部换成ABCD= ,希望能帮我一下!谢谢!
帖子8208&积分36899&技术175 &捐助510 &注册时间&
loveyou1205
& & 把你的a.txt和n.txt打包压缩上传到论坛,我试试。
【批处理在线视频分享】
【论坛捐助】
【论坛官方QQ群】BAT群:& &VBS群:
帖子6&积分17&技术0 &捐助0 &注册时间&
附件为A文件和N文件!烦请帮忙看一下!谢谢!
附件: 您需要才可以下载或查看附件。没有帐号?
帖子6&积分17&技术0 &捐助0 &注册时间&
Batcher大神,能不能抽时间给我看一下呀
帖子6&积分17&技术0 &捐助0 &注册时间&
命令行工具 sed.exe 是不是在XP下不起作用呀??
[通过 QQ、MSN 分享给朋友]txt文本文件重复内容如何更换
txt文本文件重复内容如何更换
09-10-25 &匿名提问
XP.CMD命令我知道点!ASSOC 显示或修改文件扩展名关联。AT 计划在计算机上运行的命令和程序。ATTRIB 显示或更改文件属性。BREAK 设置或清除扩展式 CTRL+C 检查。CACLS 显示或修改文件的访问控制列表(ACLs)。CALL 从另一个批处理程序调用这一个。CD 显示当前目录的名称或将其更改。CHCP 显示或设置活动代码页数。CHDIR 显示当前目录的名称或将其更改。CHKDSK 检查磁盘并显示状态报告。CHKNTFS 显示或修改启动时间磁盘检查。CLS 清除屏幕。CMD 打开另一个 Windows 命令解释程序窗口。COLOR 设置默认控制台前景和背景颜色。COMP 比较两个或两套文件的内容。COMPACT 显示或更改 NTFS 分区上文件的压缩。CONVERT 将 FAT 卷转换成 NTFS。您不能转换当前驱动器。COPY 将至少一个文件复制到另一个位置。DATE 显示或设置日期。DEL 删除至少一个文件。DIR 显示一个目录中的文件和子目录。DISKCOMP 比较两个软盘的内容。DISKCOPY 将一个软盘的内容复制到另一个软盘。DOSKEY 编辑命令行、调用 Windows 命令并创建宏。ECHO 显示消息,或将命令回显打开或关上。ENDLOCAL 结束批文件中环境更改的本地化。ERASE 删除至少一个文件。EXIT 退出 CMD.EXE 程序(命令解释程序)。FC 比较两个或两套文件,并显示不同处。FIND 在文件中搜索文字字符串。FINDSTR 在文件中搜索字符串。FOR 为一套文件中的每个文件运行一个指定的命令。FORMAT 格式化磁盘,以便跟 Windows 使用。FTYPE 显示或修改用于文件扩展名关联的文件类型。GOTO 将 Windows 命令解释程序指向批处理程序中某个标明的行。GRAFTABL 启用 Windows 来以图像模式显示扩展字符集。HELP 提供 Windows 命令的帮助信息。IF 执行批处理程序中的条件性处理。LABEL 创建、更改或删除磁盘的卷标。MD 创建目录。MKDIR 创建目录。MODE 配置系统设备。MORE 一次显示一个结果屏幕。MOVE 将文件从一个目录移到另一个目录。PATH 显示或设置可执行文件的搜索路径。PAUSE 暂停批文件的处理并显示消息。POPD 还原 PUSHD 保存的当前目录的上一个值。PRINT 打印文本文件。PROMPT 更改 Windows 命令提示符。PUSHD 保存当前目录,然后对其进行更改。RD 删除目录。RECOVER 从有问题的磁盘恢复可读信息。REM 记录批文件或 CONFIG.SYS 中的注释。REN 重命名文件。RENAME 重命名文件。REPLACE 替换文件。RMDIR 删除目录。SET 显示、设置或删除 Windows 环境变量。SETLOCAL 开始批文件中环境更改的本地化。SHIFT 更换批文件中可替换参数的位置。SORT 对输入进行分类。START 启动另一个窗口来运行指定的程序或命令。SUBST 将路径跟一个驱动器号关联。TIME 显示或设置系统时间。TITLE 设置 CMD.EXE 会话的窗口标题。TREE 以图形模式显示驱动器或路径的目录结构。TYPE 显示文本文件的内容。VER 显示 Windows 版本。VERIFY 告诉 Windows 是否验证文件是否已正确写入磁盘。VOL 显示磁盘卷标和序列号。XCOPY 复制文件和目录树。appwiz.cpl--添加删除程序control userpasswords2---用户帐户设置cleanmgr--垃圾整理CMD命令提示符可以当作是 Windows 的一个附件,Ping,Convert 这些不能在图形环境下 使用的功能要借助它来完成。cmd-view察看Java虚拟机版本。-调用的则是系统内置的 NTVDM,一个 DOS虚拟机。它完全是一个类似 Virtual PC 的 虚拟环境,和系统本身联系不大。当我们在命令提示符下运行 DOS 程序时,实际上也 是自动转移到 NTVDM虚拟机下,和 CMD 本身没什么关系。calc-启动计算器chkdsk.exe-Chkdsk磁盘检查compmgmt.msc-计算机管理conf-启动 netmeetingcontrol userpasswords2-User Account 权限设置devmgmt.msc-设备管理器diskmgmt.msc-磁盘管理实用程序dfrg.msc-磁盘碎片整理程序drwtsn32- 系统医生dvdplay-启动Media Playerdxdiag-DirectX Diagnostic Toolgpedit.msc-组策略编辑器gpupdate /target:computer /force 强制刷新组策略eventvwr.exe-事件查看器explorer-打开资源管理器logoff-注销命令lusrmgr.msc-本机用户和组msinfo32-系统信息msconfig-系统配置实用程序net start (servicename)-启动该服务net stop (servicename)-停止该服务notepad-打开记事本nusrmgr.cpl-同control userpasswords,打开用户帐户控制面板Nslookup-IP地址侦测器oobe/msoobe /a-检查XP是否激活perfmon.msc-计算机性能监测程序progman-程序管理器regedit-注册表编辑器regedt32--注册表编辑器regsvr32 /u *.dll-停止dll文件运行route print--查看路由表 rononce -p -15秒关机rsop.msc-组策略结果集rundll32.exe rundll32.exe %Systemroot%System32shimgvw.dll,ImageView_Fullscreen----启动一个空白的Windows 图片和传真查看器secpol.msc-本地安全策略services.msc-本地服务设置sfc /scannow-启动系统文件检查器sndrec32 录音机taskmgr-任务管理器(适用于2000/xp/2003)tsshutdn-60秒倒计时关机命令winchat-XP自带局域网聊天winmsd-系统信息winver-显示About Windows 窗口wupdmgr Windows Update
请登录后再发表评论!用java替换txt文本中列的问题_百度知道
用java替换txt文本中列的问题
我想a.txt提取第二第三列两列数据都加1放入b.txt第二第三列想请神帮忙用java实现行与行间车列与列间空格
提问者采纳
package&import&java.io.BufferedRimport&java.io.Fimport&java.io.FileOutputSimport&java.io.FileRimport&java.io.IOEimport&java.util.ArrayLimport&java.util.Lpublic&class&FileTest&{ public&static&void&main(String[]&args)&throws&IOException{
String&path&=&&D:\\a.txt&;
String&bPath&=&&D:\\b.txt&;
//&读取文件
List&String[]&&list&=&readFile(path);
System.out.println(&========&割线&=========&);
List&String[]&&bList&=&readFile(bPath);
//&更新列表数据
updateFile(list,&bList,&1);
//&保存更新数据
saveList2File(bPath,&bList); }
/** &*&更新文件列表 &*&@param&lista&列表A &*&@param&listb&列表B &*&@param&addNum&增加数 &*/ public&static&void&updateFile(List&String[]&&lista,&List&String[]&&listb,&int&addNum){
for(int&i=0;i&lista.size()&&&&i&listb.size();i++){
//&取a列表列并加addNum
int&col2Value&=&Integer.valueOf(lista.get(i)[1])&+&addN
int&col3Value&=&Integer.valueOf(lista.get(i)[2])&+&addN
//&写入b列表
listb.get(i)[1]&=&String.valueOf(col2Value);
listb.get(i)[2]&=&String.valueOf(col3Value);
/** &*&保存列表文本文件 &*&@param&path&路径 &*&@param&dataList&数据列表 &*&@throws&IOException&IO异 &*/ public&static&void&saveList2File(String&path,&List&String[]&&dataList)&throws&IOException{
System.out.println(&\nsave&file:&);
FileOutputStream&fos&=&new&FileOutputStream(new&File(path));
for(int&i=0;i&dataList.size();i++){
String[]&array&=&dataList.get(i);
StringBuffer&sbuf&=&new&StringBuffer();
for(int&j=0;j&array.j++){
sbuf.append(array[j]);
if(j&==&array.length&-&1){
sbuf.append(&\r\n&);
sbuf.append(&&&);
System.out.print(sbuf.toString());
fos.write(sbuf.toString().getBytes());
fos.flush();
fos.close(); }
public&static&List&String[]&&readFile(String&path)&throws&IOException{
System.out.println(path);
List&String[]&&list&=&new&ArrayList&String[]&();
//&根据路径创建File象
File&f&=&new&File(path);
//&初始化字符串列表结集
//&文件存或者目标文件直接返
if&(!f.exists()&||&!f.isFile())&{
//&创建读取字符文件便捷类
FileReader&fReader&=&new&FileReader(f);
//&临存储行字符串内容
String&strLine&=&&&;
//&缓冲字符读取类
BufferedReader&bufReader&=&new&BufferedReader(fReader);
while&((strLine&=&bufReader.readLine())&!=&null)&{
//&读取字符空添加结集合
list.add(strLine.split(&&&));
System.out.println(strLine);
//&关闭缓冲字符读取类
bufReader.close();
//&关闭字符读取类
fReader.close();
return& }}D:\a.txt10 20 30 4011 22 33 4413 25 48 47======== 割线 =========D:\b.txt10 21 31 10 2123 23 34 23 2349 26 49 49 26save file:10 21 31 10 2123 23 34 23 2349 26 49 49 26
提问者评价
其他类似问题
为您推荐:
其他2条回答
简单给提示吧:每行三部使用:str.split(& &);按空格隔返string数组转换数字再加1 Integer.parseInt(numsStr)+1;读写用说吧
要用到spit分割符在利用ArrayList集合之后再for理每次加1每一行分成三部分可以使用:str.split(& &);按空格分隔返回一个string数组转换成数字再加1 Integer.parseInt(numsStr)+1;
java的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 txt文本批量替换 的文章

 

随机推荐