Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中读取文本文件的第一行并将其打印出来?_Java_Bufferedreader - Fatal编程技术网

如何在java中读取文本文件的第一行并将其打印出来?

如何在java中读取文本文件的第一行并将其打印出来?,java,bufferedreader,Java,Bufferedreader,我想通过写入文件来保存状态,然后稍后使用bufferedReader读取文件以再次获取状态。这是我的密码: public static void main(String[] args) throws IOException{ FileWriter fw = new FileWriter("C:\\Users\\Nicolas\\Desktop\\save.txt"); BufferedWriter save = new BufferedWriter(fw); save.wr

我想通过写入文件来保存状态,然后稍后使用
bufferedReader
读取文件以再次获取状态。这是我的密码:

public static void main(String[] args) throws IOException{

   FileWriter fw = new FileWriter("C:\\Users\\Nicolas\\Desktop\\save.txt");
   BufferedWriter save = new BufferedWriter(fw);

   save.write("helloWorld");

   BufferedReader r = new BufferedReader(new FileReader("C:\\Users\\Nicolas\\Desktop\\save.txt"));

   System.out.println(r.readLine());

   save.close();        
}
如果我按run,我会被打印出来
null
。我试了一下:

if(r.readLine() != null){
    System.out.println(r.readLine());
}
但从逻辑上讲,现在我什么也没打印出来。我不知道我做错了什么。您能帮我吗?

缓冲输出,直到您刷新写入的流,因此您需要通过关闭文件或使用
save.flush()
刷新流


当使用BufferedWriter写入文件时,内容不会直接写入磁盘,因为它显然是缓冲的。你应该按照@ludo_rj在回答中的建议刷新内容

最好是尽早关闭编写器,这样会自动刷新内容。顺便说一下,关闭读卡器也是必要的

您应该使用以下机制(我已将该方法分为几种方法,以使其更加清晰):

请注意,我使用了try with resource语句,该语句仅在Java7(当然是8)中可用。如果在较旧的Java版本中运行,则必须按照以下方式编写方法:

    private static void saveState(String state, String fileName) throws IOException {
        PrintWriter writer = null;
        try {
            writer = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
            writer.println(state);
        } finally {
            if (writer != null)
                writer.close();
        }
    }

    private static String readState(String fileName) throws IOException {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(fileName));
            return reader.readLine();
        } finally {
            if (reader != null)
                reader.close();
        }
    }

r、 close()您还需要关闭BufferedReader以及可能重复的BufferedReader,我认为在使用r.close()读取后也需要关闭BufferedReader@朱奈德哈桑:是的,也应该处理例外情况,但这是另一个问题。这可以让它工作,但并不完美。是的,你明白了,是的,异常也应该被捕获
  // Write to file      
  FileWriter fw = new FileWriter("C:\\Users\\Nicolas\\Desktop\\save.txt");
  BufferedWriter save = new BufferedWriter(fw);

  save.write("example");
  save.flush()

  // read as stream
  BufferedReader r = new BufferedReader(new FileReader("C:\\Users\\Nicolas\\Desktop\\save.txt"));
  System.out.println(r.readLine());

  save.close();
public class SaveStateTesing {

    private static final String FILE_NAME = "C:\\Users\\Nicolas\\Desktop\\save.txt";

    public static void main(String[] args) throws IOException {
        saveState("helloWorld", FILE_NAME);
        String state = readState(FILE_NAME);
        System.out.println(state);
    }

    private static void saveState(String state, String fileName) throws IOException {
        try(PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(fileName)))) {
            writer.println(state);
        }
    }

    private static String readState(String fileName) throws IOException {
        try(BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
            return reader.readLine();
        }
    }

}
    private static void saveState(String state, String fileName) throws IOException {
        PrintWriter writer = null;
        try {
            writer = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
            writer.println(state);
        } finally {
            if (writer != null)
                writer.close();
        }
    }

    private static String readState(String fileName) throws IOException {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(fileName));
            return reader.readLine();
        } finally {
            if (reader != null)
                reader.close();
        }
    }