Java Filereader.read()方法不工作

Java Filereader.read()方法不工作,java,filereader,file-read,Java,Filereader,File Read,我编写了以下代码,创建一个文件,向其中添加文本,然后读取该文件。我的问题是,在执行时,文件的内容不会显示在屏幕上,尽管内容添加到文本文件中 下面是我的代码 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.createNe

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

下面是我的代码

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()
)后:


在读取文件之前,您需要关闭或至少关闭写入程序。写入文件是缓冲的,因此当您从文件中读取时,内容实际上并不在文件中。我建议使用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,它是字符输入流的通用读取器。是读取文本文件的最佳选项

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) {
        }
    }
}

刷新并关闭
写入程序
,您还可以使用
缓冲读取程序
逐行读取文件内容以打印其内容

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();
    }
}

尝试读取此文件之前,请尝试关闭
写入程序。另外,不要忽略
catch
块中可能存在的异常。程序输出和文件内容都是文本。不要将文本作为截图发布。在你的问题中以文本形式发布。@Berger非常感谢!成功了。干杯
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();
    }
}