Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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_Logic_Bufferedreader_Filereader - Fatal编程技术网

Java 文件读取器方法

Java 文件读取器方法,java,logic,bufferedreader,filereader,Java,Logic,Bufferedreader,Filereader,所以我编写了这个文件读取器方法,它应该返回文件中所有内容的字符串,但它不能正常工作。写入文件的工作非常完美,但这种读取方法不行。该方法当前所做的是读取最后添加的字符串/文本,但不从头到尾读取文件。”br'是我的bufferedReader,它在同一类中的其他地方声明。 下面是br的定义: private static FileInputStream fis; private static BufferedReader br; 然后在构造函数中: fis = new FileInputStrea

所以我编写了这个文件读取器方法,它应该返回文件中所有内容的字符串,但它不能正常工作。写入文件的工作非常完美,但这种读取方法不行。该方法当前所做的是读取最后添加的字符串/文本,但不从头到尾读取文件。”br'是我的bufferedReader,它在同一类中的其他地方声明。 下面是br的定义:

private static FileInputStream fis;
private static BufferedReader br;
然后在构造函数中:

fis = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(fis));
方法如下:

public String readStuff(){
    String line = "";
    String r = "";
    try{
        while((line = br.readLine()) != null){
            System.out.println(line + " read ");
            r+= line;
        }
        //br.close(); JDK 7 does this automatically apparently
    }catch(IOException e){
        e.printStackTrace();
        System.out.println("Error at readStuff!");
    }
    return r;

我知道我要么犯了逻辑错误,要么犯了一些明显的错误,我只是不知道在哪里

如果要读取整个文件两次,下次必须关闭它并打开新的流/读取器


这些流/读取器应该是方法的本地流/读取器,而不是成员,当然也不是静态流/读取器

使用文件和
FileReader
可以从目录中读取/写入文件

您可以使用
File
class对象获取文件

File file = new File("file.txt");
在读取该文件的过程之后

FileReader fr = new FileReader(file);
有完整的代码读取文件

File file = new File("G:\\Neon\\data.txt");
        FileReader fr = new FileReader(file);
        String data = "";
        while((i = fr.read()) != -1)
        {
            data = data + (char)i;
        }
System.out.println(data);

我知道我要么犯了逻辑错误,要么犯了一些明显的错误,我只是不知道在哪里调试告诉您什么?您是如何定义br的?因此您多次使用同一个
BufferedReader
实例?您是否曾将其返回到文件的开头?此代码将读取文件中的所有内容一次。NB Java 7不会使用此语法自动关闭任何内容。你应该手动关闭它。然后,您可能会发现您多次调用此方法;-)确切地它告诉您在关闭文件后正在调用该方法。第一次,它读取整个文件。第二次,在您删除
close()之后,
文件仍然处于打开状态,因此它提供了自第一次以来添加到文件中的所有内容。如果要读取整个文件两次,则必须关闭它并打开新的流。但是,如果应用程序需要不断地重新读取同一个文件,那么它就有问题了。你为什么认为你需要这么做?