在JAVA中用buffer writer向TXT文件中写入信息,为什么会将将上一次所输入的再重新写入一遍?
时间: 2024-02-13 13:01:12 浏览: 28
可能是因为你在写入完毕后没有将缓冲区清空,导致之前的内容没有被清除而被重复写入。你可以在写入完毕后使用 flush() 方法清空缓冲区,或者在创建 BufferedWriter 对象时指定 autoFlush 参数为 true,这样在写入完毕后会自动清空缓冲区。以下是一个使用 autoFlush 参数的示例代码:
```
try (BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"), true)) {
writer.write("Hello, world!");
// autoFlush 参数为 true,写入完毕后会自动清空缓冲区
}
```
相关问题
在JAVA中用bufferwriter向TXT文件中写入文件,为什么会覆盖文件?
在Java中使用BufferedWriter向TXT文件中写入数据时,如果您使用了文件输出流(FileWriter)来创建BufferedWriter对象,则默认情况下会覆盖原有文件内容。这是因为在创建文件输出流时,如果文件已经存在,会将原有文件内容清空,然后开始写入新的内容。
如果您希望在原有文件内容的基础上进行写入,可以使用FileWriter的另一个构造函数,将其第二个参数设置为true,即:
```
FileWriter writer = new FileWriter("file.txt", true);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
```
其中,第二个参数表示是否以追加方式写入文件,如果设置为true,则会在原有文件内容的末尾开始写入新的数据,而不是覆盖原有文件内容。
另外,还可以使用RandomAccessFile类来实现在指定位置进行插入数据的功能,但使用起来相对复杂。
java中用Process类创建一个记事本写入哈喽你好并保存在E盘中
可以使用以下代码实现:
```java
import java.io.*;
public class ProcessExample {
public static void main(String[] args) throws IOException {
String command = "notepad.exe";
Process process = Runtime.getRuntime().exec(command);
OutputStream outputStream = process.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
writer.write("哈喽你好");
writer.flush();
writer.close();
process.waitFor();
process.destroy();
File file = new File("E:/test.txt");
FileWriter fileWriter = new FileWriter(file);
fileWriter.write("哈喽你好");
fileWriter.flush();
fileWriter.close();
}
}
```
首先使用 `Runtime.getRuntime().exec()` 方法创建记事本进程,然后通过进程的输出流写入文本内容。接着等待进程执行完毕并销毁进程。最后将文本内容保存到 E 盘的 test.txt 文件中。