Java txt文本的追加、换行问题

本文介绍如何使用Java进行文件操作,特别是如何正确处理不同操作系统间的换行符差异。通过实例展示了在Windows环境下,如何避免因换行符不匹配导致的问题,并提供了使用System.getProperty方法获取合适的换行符的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public void test() throws Exception{

File file = new File("c:/test.log");

RandomAccessFile rf = new RandomAccessFile(file, "rw");

long fileLength = rf.length();

// 将本件指针移到文本末尾

rf.seek(fileLength);

// 文本文件追加文本,换行符

rf.writeBytes("11111/n");

// rf.writeBytes("1111 /r/n")

rf.close();

}

// rf.writeBytes("11111/n");

程序执行上述语句:

在文本文件中有很多小黑块,因为在这个文件里面的换行标志只有一个字符,

也就是ASCII码的10,而在Windows中,换行是采用两个字符表示的,即回车加换行,也就是ASCII码的13和10。

当打开这样的文件时,

由于在这个文件当中只有换行,没有回车,所以记事本程序就把它解析成了小黑块。

解决办法:

System.out.println(System.getProperty("line.separator").length());// 2

String str = System.getProperty("line.separator");

for(int i=0;i<str.length();i++)

// 打印 ASCII 码

System.out.print((int)str.charAt(i)+" "); // 13 10

System.out.println();

---------------------------------------------

long fileLength = rf.length();

String lineSeparator = System.getProperty("line.separator");
rf.writeBytes("11111"+lineSeparator);

第一次执行 fileLength == 0

第二次执行 fileLength == 7 // 11111 +"/r/n"

---------------------------------------------------------------------

第三次执行 fileLength == 14

在 java 中 System.getProperty("line.separator").length() == 2

将字符写入文本文件而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值