解决读取换行符问题

删除不好做,因为你是一个文件内容的删除。
可以用字符串数组来保存每一行的值,删除了之后,再重新保存进去。
可以这样做:比如说你的文件路径:c:/a.txt
1.File file = new File("c:/a.txt");
2.BufferedReader reader = new BufferedReader(file);
3.byte[] strValue = new byte[(int)file.length()];
4.String str = reader.read(strValue);//按文件大小一次读入
5.String rows = str.split("/r/n");//按换行符拆分,即数组的每一条,对应文件每一行的内容。
6.如果要删除按条件删除某一行,只需要判断字符串数组是否存在这一行了,如果存在,替换为“”即可。
7.Writer writer = new FileWriter(file);
8.
for(int i=0;i<rows.length;i++){
  writer.write(rows[i]);
}

只是分析了一下,具体步骤还是你来完成了。。
### 如何在 Java 中正确读取文件或字符串中的换行符 在 Java 中,读取文件或字符串中的换行符可以通过多种方式实现。以下是几种常见的方法及其特点: #### 使用 `BufferedReader` 和 `readLine()` 方法 `BufferedReader` 提供了一个方便的方法来逐行读取文件内容。虽然 `readLine()` 方法本身会移除每行末尾的换行符,但我们可以在后续处理中手动添加这些换行符。 ```java import java.io.*; public class ReadFileWithNewlines { public static void main(String[] args) throws IOException { File file = new File("example.txt"); StringBuilder contentBuilder = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new FileReader(file))) { String line; while ((line = reader.readLine()) != null) { contentBuilder.append(line).append(System.lineSeparator()); // 手动添加换行符 } } System.out.println(contentBuilder.toString()); } } ``` 这种方法通过调用 `System.lineSeparator()` 来获取当前操作系统的换行符,并将其重新附加到每一行的内容之后[^1]。 --- #### 使用 `Files.readAllLines()` `Files.readAllLines()` 是一种简单的方式来一次性读取整个文件的所有行。然而,默认情况下,该方法也会移除换行符。为了保留它们,可以再次使用 `System.lineSeparator()` 将其追加回去。 ```java import java.nio.file.*; import java.util.List; public class FilesReadAllLinesExample { public static void main(String[] args) throws Exception { Path path = Paths.get("example.txt"); List<String> lines = Files.readAllLines(path); StringBuilder contentBuilder = new StringBuilder(); for (String line : lines) { contentBuilder.append(line).append(System.lineSeparator()); // 添加换行符 } System.out.println(contentBuilder.toString()); } } ``` 这种方式适用于较小的文件,因为它会在内存中加载整个文件内容[^5]。 --- #### 处理字符串中的换行符 如果需要从现有的字符串中提取并保留换行符,可以直接利用正则表达式或其他工具进行匹配和替换。例如: ```java public class ReplaceNewlinesInString { public static void main(String[] args) { String text = "This is a test.\nAnother line."; // 替换换行符为指定字符(如空格) String result = text.replaceAll("\r\n|\r|\n", " "); System.out.println(result); } } ``` 需要注意的是,由于 Java 字符串是不可变的,因此任何修改都会返回一个新的字符串实例[^3]。 --- #### 序列化与反序列化的注意事项 当涉及到更复杂的数据结构(如 `BigInteger`),或者希望优化存储空间时,可能需要考虑二进制格式而非纯文本形式保存数据。尽管如此,在大多数场景下,对于简单的文本文件而言,上述基于字符流的操作已经足够满足需求[^2]。 --- ### 总结 以上介绍了三种不同的技术用于解决如何在 Java 程序里妥善对待换行标记的问题——无论是来自外部资源还是内部变量。具体选择取决于实际应用场景以及性能考量等因素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值