Java:访问和写入文件时出现问题

时间:2013-08-16 23:30:18

标签: java file exception filewriter bufferedwriter

我正在测试使用此代码写入文件:

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

4 个答案:

答案 0 :(得分:4)

A BufferedWriter就是这样,它在输出写入目标之前缓冲输出。这可以使BufferedWriter更快地使用,因为它不必立即写入缓慢的目标,如磁盘或插槽。

当内部缓冲区已满时,您将flush Writerclose作者

写入内容

请记住,如果你打开它,你应该关闭它......

例如......

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(),才能将缓冲区真正写入文件。