Java附加到文本文件的每行末尾
我想在现有文本文件的每行末尾添加一些文本。每次我运行代码时,它都会删除所有内容,但不会向文件中写入/附加任何内容。 非常感谢您的帮助Java附加到文本文件的每行末尾,java,arrays,Java,Arrays,我想在现有文本文件的每行末尾添加一些文本。每次我运行代码时,它都会删除所有内容,但不会向文件中写入/附加任何内容。 非常感谢您的帮助 import java.io.*; public class RandomNumber { public static void main(String[] args) { File dir = new File("C:\\testing"); System.out.println(dir.isDirectory
import java.io.*;
public class RandomNumber
{
public static void main(String[] args) {
File dir = new File("C:\\testing");
System.out.println(dir.isDirectory());
try {
File file = new File(dir, "Test.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
String s = "Add1,";
String s2 = "Add2\n";
String str;
while((str = br.readLine()) != null) {
StringBuffer sb = new StringBuffer(str);
sb.append(s + s2);
String y = sb.toString();
System.out.println(sb);
System.out.println("Appending");
bw.write(y);
}
bw.close();
System.out.println("Done");
}catch(IOException e) {}
}
}
不要使用空的捕捉块。出现异常时,应显示一条消息
除非使用RandomAccessFile,否则无法读取和写入同一文件 当您打开要输出的文件时,该文件将被清除,因此没有数据可读取,因此没有数据可写入,因此结果是文件现在为空 如果在“附加”模式下打开文件进行输出,则可以读取文件中的数据(数据将保留在文件中),但所有write语句都附加到原始文件的末尾,因此现在文件中有数据的副本 相反,您的基本逻辑应该是:
除非使用RandomAccessFile,否则无法读取和写入同一文件 当您打开要输出的文件时,该文件将被清除,因此没有数据可读取,因此没有数据可写入,因此结果是文件现在为空 如果在“附加”模式下打开文件进行输出,则可以读取文件中的数据(数据将保留在文件中),但所有write语句都附加到原始文件的末尾,因此现在文件中有数据的副本 相反,您的基本逻辑应该是:
除非使用RandomAccessFile,否则无法读取和写入同一文件 当您打开要输出的文件时,该文件将被清除,因此没有数据可读取,因此没有数据可写入,因此结果是文件现在为空 如果在“附加”模式下打开文件进行输出,则可以读取文件中的数据(数据将保留在文件中),但所有write语句都附加到原始文件的末尾,因此现在文件中有数据的副本 相反,您的基本逻辑应该是:
除非使用RandomAccessFile,否则无法读取和写入同一文件 当您打开要输出的文件时,该文件将被清除,因此没有数据可读取,因此没有数据可写入,因此结果是文件现在为空 如果在“附加”模式下打开文件进行输出,则可以读取文件中的数据(数据将保留在文件中),但所有write语句都附加到原始文件的末尾,因此现在文件中有数据的副本 相反,您的基本逻辑应该是:
我不确定您使用的是什么版本的Java,但如果可以的话,我强烈建议您使用使用流的Java8。这是一个很棒的函数式编程接口,可以删除大量的样板代码。 看 它以一种实用的方式讲述了你试图实现的目标。如果这会使您的方法复杂化,请忽略我的建议,但我肯定会在将来研究Java8及其FP构造,它们使Java中的编码更加优雅
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class RandomNumber {
public static void main(String[] args) {
Path path = Paths.get("c:/workspace", "testing.txt");
String s = "Add1\n";
try(BufferedWriter writer = Files.newBufferedWriter(path,StandardOpenOption.APPEND)) {
writer.write(s);
}
} catch (IOException e) {
e.printStackTrace();
}
}我不确定您使用的是什么版本的Java,但如果可以,我强烈建议您使用使用流的Java 8。这是一个很棒的函数式编程接口,可以删除大量的样板代码。 看 它以一种实用的方式讲述了你试图实现的目标。如果这会使您的方法复杂化,请忽略我的建议,但我肯定会在将来研究Java8及其FP构造,它们使Java中的编码更加优雅
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class RandomNumber {
public static void main(String[] args) {
Path path = Paths.get("c:/workspace", "testing.txt");
String s = "Add1\n";
try(BufferedWriter writer = Files.newBufferedWriter(path,StandardOpenOption.APPEND)) {
writer.write(s);
}
} catch (IOException e) {
e.printStackTrace();
}
}我不确定您使用的是什么版本的Java,但如果可以,我强烈建议您使用使用流的Java 8。这是一个很棒的函数式编程接口,可以删除大量的样板代码。 看 它以一种实用的方式讲述了你试图实现的目标。如果这会使您的方法复杂化,请忽略我的建议,但我肯定会在将来研究Java8及其FP构造,它们使Java中的编码更加优雅
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class RandomNumber {
public static void main(String[] args) {
Path path = Paths.get("c:/workspace", "testing.txt");
String s = "Add1\n";
try(BufferedWriter writer = Files.newBufferedWriter(path,StandardOpenOption.APPEND)) {
writer.write(s);
}
} catch (IOException e) {
e.printStackTrace();
}
}我不确定您使用的是什么版本的Java,但如果可以,我强烈建议您使用使用流的Java 8。这是一个很棒的函数式编程接口,可以删除大量的样板代码。 看 它以一种实用的方式讲述了你试图实现的目标。如果这会使您的方法复杂化,请忽略我的建议,但我肯定会在将来研究Java8及其FP构造,它们使Java中的编码更加优雅
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class RandomNumber {
public static void main(String[] args) {
Path path = Paths.get("c:/workspace", "testing.txt");
String s = "Add1\n";
try(BufferedWriter writer = Files.newBufferedWriter(path,StandardOpenOption.APPEND)) {
writer.write(s);
}
} catch (IOException e) {
e.printStackTrace();
}
}在附加到字符串生成器之后,似乎需要重新分配给它。尝试替换<代码