Filereader.read() 方法无效

Filereader.read() method not working

我编写了以下代码来创建一个文件,向其中添加文本,然后读取该文件。我的问题是在执行时,文件的内容没有显示在屏幕上,尽管内容被添加到文本文件中。

以下是我的代码

import java.io.*;
class prc4{
public static void main(String args[]){
try{
    File f = new File("C:\Program Files\Java\jdk1.8.0_25\bin\file1.txt");
    if (f.createNewFile()){
        System.out.println("File is created!");
        }else{
        System.out.println("File already exists.");
        }
    FileWriter f1 = new FileWriter("file1.txt");
    f1.write("Hello World. This is a sample text file!");
    FileReader f2 = new FileReader("file1.txt");
    int x = f2.read();
    while(x != -1){
        System.out.println((char)x);
        x = f2.read();
    }
    f1.close();
    f2.close();
}catch(Exception e){    }
}
}

输出:

在文本文件中:

写入文件后(f1.write()):

    f1.close();
    BufferedReader reader = null;
    try {
        reader = new BufferedReader(new FileReader("file1.txt"));
        String line = reader.readLine();

        while (line!=null) {
            System.out.println(line);
            line = reader.readLine();
        }

    } catch (IOException ioe) {
        System.out.println(ioe.getMessage());
    } finally {
        try { if (reader!=null) reader.close(); } catch (Exception e) {}
    }

您需要关闭,或者至少 flush,然后才能从文件中读取写入器。写入文件是缓冲的,因此当您从文件中读取内容时,内容实际上并不在文件中。我建议使用 try-with-resources 构造关闭编写器:

try (FileWriter f1 = new FileWriter("file1.txt"))
    {
    f1.write("Hello World. This is a sample text file!");
    }

try (FileReader f2 = new FileReader("file1.txt");)
    {
    int x = f2.read();
    while(x != -1){
        System.out.println((char)x);
        x = f2.read();
    }
    }

还要注意,您正在为每个字符调用 println(),这意味着每个字符将打印在单独的行上。这可能是您想要的,或者您可能想改为调用 print()

尝试使用 BufferedReader,它是字符输入流的通用 reader。是从文本文件中读取的最佳选择

class prc4 {
    public static void main(String args[]) {
        try {
            File f = new File(".\file1.txt");
            if (f.createNewFile()) {
                System.out.println("File is created!");
            } else {
                System.out.println("File already exists.");
            }
            FileWriter f1 = new FileWriter(".\file1.txt");
            f1.write("Hello World. This is a sample text file!");
            FileReader f2 = new FileReader(".\file1.txt");
            BufferedReader br = new BufferedReader(f2); 
            String s; 
            while((s = br.readLine()) != null) { 
                System.out.println(s); 
            } 
            br.close();
            f1.close();
            f2.close();
        } catch (Exception e) {
        }
    }
}

刷新并关闭你的 writer 你也可以使用 BufferedReader 逐行读取文件内容以打印其内容。

public static void main(String args[]){
    try{
        File f = new File("file1.txt");
        if (f.createNewFile()){
            System.out.println("File is created!");
        }else{
            System.out.println("File already exists.");
        }
        FileWriter f1 = new FileWriter(f);
        f1.write("Hello World. This is a sample text file!");
        f1.flush();
        f1.close();  

        FileReader f2 = new FileReader(f);
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(f2);
            String l = reader.readLine();

            while (l!=null) {
                System.out.println(l);
                l = reader.readLine();
            }

        }finally {
            try { 
                if (reader!=null) 
                  reader.close(); 
            } catch (Exception e) {
                // Do nothing
            }
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}