我有以下代码
try
{
FileWriter fileWriter = new FileWriter("C:\temp\test.txt");
fileWriter.write("Hi this is sasi This test writing");
fileWriter.append("test");
}
catch(IOException ioException)
{
ioException.printStackTrace();
}
执行成功后,文件创建成功,但创建的文件为空。
代码有什么问题?
您必须关闭FileWriter
,否则它不会刷新当前缓冲区。你可以直接调用flush
方法。
fileWriter.flush()
fileWriter.close()
如果要关闭文件,则不需要使用flush
方法。flush
可以使用,例如,如果您的程序运行了一段时间,并在文件中输出一些东西,您想在其他地方检查它。
关闭缺失。因此,不是最后一个缓存数据没有写入磁盘。
关闭也发生在try-with-resources中。即使会抛出异常。在close
之前也不需要flush
,因为close会将所有缓冲的数据刷新到文件中。
try (FileWriter fileWriter = new FileWriter("C:\temp\test.txt"))
{
fileWriter.write("Hi this is sasi This test writing");
fileWriter.append("test");
}
catch (IOException ioException)
{
ioException.printStackTrace();
}
您需要关闭filewriter
,否则当前缓冲区将不会刷新,并且不允许您写入文件。
fileWriter.flush(); //just makes sure that any buffered data is written to disk
fileWriter.close(); //flushes the data and indicates that there isn't any more data.
来自Javadoc
关闭流,先冲洗它。一旦河流被关闭,进一步的write()或flush()调用将导致IOException异常抛出。但是,关闭先前关闭的流没有效果。
试试这个:
import java.io.*;
public class Hey
{
public static void main(String ar[])throws IOException
{
File file = new File("c://temp//Hello1.txt");
// creates the file
file.createNewFile();
// creates a FileWriter Object
FileWriter writer = new FileWriter(file);
// Writes the content to the file
writer.write("Thisn isn ann examplen");
writer.flush();
writer.close();
}
}
请试试:
try
{
FileWriter fileWriter = new FileWriter("C:\temp\test.txt");
fileWriter.write("Hi this is sasi This test writing");
fileWriter.append("test");
fileWriter.flush(); // empty buffer in the file
fileWriter.close(); // close the file to allow opening by others applications
}
catch(IOException ioException)
{
ioException.printStackTrace();
}