java 如何向txt文件中的某一行继续写入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何向txt文件中的某一行继续写入相关的知识,希望对你有一定的参考价值。
打开一个已存在的txt文件,每一行是一条记录。
想对已知的某一行进行追加写入,如,在第五行继续写入一个字符串,有什么思路?
最好有具体的代码例子。
问题的关键不在于追加,在于向特定的某一行写入。
比如文件有10行啊~我只想在第五行接着写。
Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何地方。这就是“Random”的意义所在。
相关API:
RandomAccessFile(String
name, String
mode)构造器,模式分为r(只读),rw(读写)等
RandomAccessFile.readLine()方法实现对一整行的读取,并重新定位操作位置
RandomAccessFile.write(byte[] b)用于字节内容的写入
示例如下:
RandomAccessFile raf = new RandomAccessFile("f:/1.txt", "rw");int targetLineNum = 10;
int currentLineNum = 0;
while(raf.readLine() != null)
if(currentLineNum == targetLineNum) // 定位到目标行时结束
break;
currentLineNum++;
raf.write("\\r\\ninsert".getBytes());
raf.close();
根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象
你仔细看看构造方法,有一个就是你象要的,比如上面的
你可以先查找要插入的位置,然后用
write
public void write(String str,
int off,
int len)
throws IOException写入字符串的某一部分。
参数:
str - 字符串
off - 相对初始写入字符的偏移量
len - 要写入的字符数
这个方法 参考技术B 可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter将流数据写到目的地。
例如:
FileWriter tofile=new FileWriter("Student.txt");
BufferedWriter out=new BufferedWriter(tofile); 参考技术C 用RandomAccessFile不行吗?
Java 如何修改文件的某一行内容
例如有个txt文件如下:
1 小明
2 小刚
3 小红
改为
1 小明
2 小王八
3 小红‘
请举个例子
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Day02_B
static String path="K:/Test/Name.txt";//路径
public static void main(String[] args)
File fileText=new File(path);//文件
if(fileText.canExecute()) //如果文件存在就继续
setText(fileText,"刚","xx");//“刚”指定改为:“XX”
private static void setText(File fileText,String target,String src) //修改
BufferedReader br=null;
PrintWriter pw=null;
StringBuffer buff=new StringBuffer();//临时容器!
String line=System.getProperty("line.separator");//平台换行!
try
br=new BufferedReader(new FileReader(fileText));
for(String str=br.readLine();str!=null;str=br.readLine())
if(str.contains(target))
str=str.replaceAll(target,src);
buff.append(str+line);
pw=new PrintWriter(new FileWriter(fileText),true);
pw.println(buff);
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
finally
if(br!=null)
try
br.close();
catch (IOException e)
e.printStackTrace();
if(pw!=null)
pw.close();
追答
str.replace("小刚", "小王八"); 参考技术C 密码怎么解锁
以上是关于java 如何向txt文件中的某一行继续写入的主要内容,如果未能解决你的问题,请参考以下文章
java怎样向一个文件(如txt文件)中写入一段数据,保存后下一次打开继续使用?