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();


参考技术A FileWriter(String fileName, boolean append)
根据给定的文件名以及指示是否附加写入数据的 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.BufferedReader;
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();


追答

参考技术A 按行读取文件,然后将你要换的数据替换掉,然后在重新全部写入文件 参考技术B String str;
str.replace("小刚", "小王八");
参考技术C 密码怎么解锁

以上是关于java 如何向txt文件中的某一行继续写入的主要内容,如果未能解决你的问题,请参考以下文章

matlab中如何读取多个txt文件中的某一行的数据

java怎样向一个文件(如txt文件)中写入一段数据,保存后下一次打开继续使用?

java代码 如何向TXT文件写入内容?

java写入txt文件 想要修改txt文件每一行的第一个数字 加一就好

java——修改txt文件中某一行的内容

java客户端如何向服务器txt文件写入信息