我正在测试使用此代码写入文件:
package files;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
public class FileTest1
{
public static void main(String[] args)
{
try
{
try
{
File f = new File("filetest1.txt");
FileWriter fWrite = new FileWriter(f);
BufferedWriter fileWrite = new BufferedWriter(fWrite);
fileWrite.write("This is a test!");
}
catch(FileNotFoundException e)
{
System.out.print("A FileNotFoundException occurred!");
e.printStackTrace();
}
}
catch(IOException e)
{
System.out.println("An IOException occurred!:");
e.printStackTrace();
}
}
}
执行时没有任何反应。 “这是一个测试!”没有写,也没有StackTrace或“A / An [例外]发生!”...... 我不知道是什么导致了这个问题。我在文件...
下面的包中有fileTest1.txt答案 0 :(得分:4)
A BufferedWriter
就是这样,它在输出写入目标之前缓冲输出。这可以使BufferedWriter
更快地使用,因为它不必立即写入缓慢的目标,如磁盘或插槽。
当内部缓冲区已满时,您将flush
Writer
或close
作者
请记住,如果你打开它,你应该关闭它......
例如......
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TestFileWriter {
public static void main(String[] args) {
try {
BufferedWriter fileWrite = null;
try {
File f = new File("filetest1.txt");
System.out.println("Writing to " + f.getCanonicalPath());
FileWriter fWrite = new FileWriter(f);
fileWrite = new BufferedWriter(fWrite);
fileWrite.write("This is a test!");
fileWrite.flush();
} catch (FileNotFoundException e) {
System.out.print("A FileNotFoundException occurred!");
e.printStackTrace();
} finally {
try {
// Note, BufferedWriter#close will also close
// the parent Writer...
fileWrite.close();
} catch (Exception exp) {
}
}
} catch (IOException e) {
System.out.println("An IOException occurred!:");
e.printStackTrace();
}
try {
BufferedReader br = null;
try {
File f = new File("filetest1.txt");
System.out.println("Reading from " + f.getCanonicalPath());
FileReader fReader = new FileReader(f);
br = new BufferedReader(fReader);
String text = null;
while ((text = br.readLine()) != null) {
System.out.println(text);
}
} catch (FileNotFoundException e) {
System.out.print("A FileNotFoundException occurred!");
e.printStackTrace();
} finally {
try {
// Note, BufferedWriter#close will also close
// the parent Writer...
br.close();
} catch (Exception exp) {
}
}
} catch (IOException e) {
System.out.println("An IOException occurred!:");
e.printStackTrace();
}
}
}
如果您使用的是Java 7,您可能需要查看try-with-resources
答案 1 :(得分:1)
在
fileWrite.write("This is a test!");
你必须flush()
作家。为了避免资源泄漏,您还应该close()
编写者(自动刷新它)。
所以你需要添加:
fileWrite.close();
答案 2 :(得分:1)
使用BufferedWriter.flush()
和BufferedWriter.close()
。其他信息http://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html
答案 3 :(得分:0)
您必须在编写器上调用close()
或至少flush()
,才能将缓冲区真正写入文件。