关于用Java从简单文本文件中读取数据的说明

关于用Java从简单文本文件中读取数据的说明,java,io,fileinputstream,Java,Io,Fileinputstream,我正在尝试使用FileInputStream从文本文件中获取数据,但没有发生 这是代码 package com.example.ex2; import java.io.*; import java.util.*; public class Input { public static void main(String args[]){ try{ FileInputStream fin=new FileInputStream("abc.txt");

我正在尝试使用FileInputStream从文本文件中获取数据,但没有发生 这是代码

package com.example.ex2;
import java.io.*;
import java.util.*;

public class Input {
public static void main(String args[]){  
      try{  
        FileInputStream fin=new FileInputStream("abc.txt");  
        int i;  
        FileInputStream fr;
        while((i=fr.read())!=-1)  
         System.out.println((char)i);

        fin.close();  
      }catch(Exception e)
      {
          e.printStackTrace();
      }  
     }  
    }
我得到的错误是:线程“main”java.lang中出现异常。错误:未解决的编译问题: 局部变量fr可能尚未初始化
我正在使用Eclipse。

您在这里声明
fr

FileInputStream fr;
但你永远不会初始化它。您尝试在中使用它的

while((i=fr.read())!=-1)
但是由于未初始化
fr
,因此没有可调用的对象
.read()
,因此您会得到错误

我猜您想将
while
更改为:

while((i=fin.read())!=-1)
并从代码中删除
fr

首先,替换此:

 while((i=fr.read())!=-1) 
为此:

while((i=fin.read())!=-1) 

第二件事是您必须检查类文件名是否与类名匹配,另一点是您必须在main方法旁边添加
抛出异常。

您需要初始化
fr

 while((i=fr.read())!=-1)
你可以用

 FileInputStream fr // initialize this
使用

但我认为你在编码时犯了一些错误。那么您应该将代码编写为

 FileInputStream fin=new FileInputStream("abc.txt");
 int i;
 while((i=fin.read())!=-1)
     System.out.println((char)i);
 fin.close();

fr未在代码中初始化。为什么要使用fr,您有fin,可以直接从fin读取。您应该使用
fin
not
fr
fr=new FileInputStream(Path);顺便说一句,始终关闭最后一个块中的流。
 FileInputStream fin=new FileInputStream("abc.txt");
 int i;
 while((i=fin.read())!=-1)
     System.out.println((char)i);
 fin.close();