Java BufferedReader和BufferedWriter
我有一个.txt文件。我想要一行从'>'开始,然后,第一个项目符号'•'被写入'>>•'。我使用:Java BufferedReader和BufferedWriter,java,bufferedreader,bufferedwriter,Java,Bufferedreader,Bufferedwriter,我有一个.txt文件。我想要一行从'>'开始,然后,第一个项目符号'•'被写入'>>•'。我使用: br = new BufferedReader(new FileReader("C:\\Users\\User\\Desktop\\text.txt")); bw = new BufferedWriter(new FileWriter("C:\\Users\\User\\Desktop\\text.txt")); while ((current_line = br.readLin
br = new BufferedReader(new FileReader("C:\\Users\\User\\Desktop\\text.txt"));
bw = new BufferedWriter(new FileWriter("C:\\Users\\User\\Desktop\\text.txt"));
while ((current_line = br.readLine()) != null) {
if (current_line.length() > 1 && (current_line.charAt(0) == '>' || current_line.charAt(1) != '>')) {
found = true;
}
if ((found) && (current_line.length() > 1) && current_line.charAt(0) == '•') {
bw.write(">>");
found = false;
}
}
br.close();
bw.close();
但结果是。。空的.txt文件?我做错了什么?非常感谢哪里是
bw.write(行);写入(“\r\n”)代码>
很遗憾,您不能在此处写入同一文件
反斜杠也必须在Java字符串中转义
最好将found
命名为tackleBullet
输入文件、输出文件和源代码使用什么编码?您正在从/向同一文件读写。项目符号是否在同一行?您还想写其他行吗?不,它总是在另一行中,在“>”之后,是第一个字符,为什么不改为说:line=readline();如果第行以(“>”)开头,则第行替换(项目符号“>>”);然后写出每一行?或者关闭文件,保存结果,打开并再次写入。使用System.lineSeparator()
(自Java 7以来)或System.getProperty(“path.separator”)
(Java 6或更早版本)而不是naive“\r\n”
@LuiggiMendoza抱歉,我在家使用Linux,为了创建Windows的文本文件,我被迫在Linux上执行“\r\n”
。我特别想防止懒惰的打字机使用“\n”
。不过,谢谢你告诉OP官方的方法。
try (br = new BufferedReader(new FileReader("C:\\Users\User\Desktop\\text.txt");
bw = new BufferedWriter(new FileWriter("C:\\Users\\User\Desktop\\text-2.txt")) {
String current_line;
while ((current_line = br.readLine()) != null) {
if (current_line.length() > 1 && (current_line.charAt(0) == '>' || current_line.charAt(1) != '>')) {
found = true;
}
if (found && current_line.startsWith("•")) {
bw.write(">>");
found = false;
}
bw.write(line);
bw.write("\r\n"):
}
}