1

我正在从文件中检索数据,出于某种原因,我每次都错过了第一个字符。我的代码。

public String readFile(){
String str = "Not Authenticated";
//Reading the file  
 try{
        FileInputStream fIn = openFileInput(fileName);
        InputStreamReader isr = new InputStreamReader(fIn); 
        char[] inputBuffer = new char[isr.read()]; //str.length()

        // Fill the Buffer with data from the file 
        try {
            isr.read(inputBuffer);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return e.toString();
        } 

        // Transform the chars to a String 
        String readString = new String(inputBuffer); 
        str = readString;


    } catch (IOException ioe)  
      {return ioe.toString();} 
    return str;
}

该文件包含单词“True”我也得到“rue”,当我创建文件时,第一个字母不能是大写字母?如果我使用大写文件,则永远找不到文件,我猜这两者不相关。

4

4 回答 4

1
    char[] inputBuffer = new char[isr.read()]; //str.length()

这不是从你的读者那里读出一个字符吗?

编辑:http ://docs.oracle.com/javase/1.4.2/docs/api/java/io/InputStreamReader.html

于 2012-07-04T01:52:52.183 回答
1

如果该文件是text文件,则通过BufferedReader.

  StringBuilder sb=new StringBuilder();
  BufferedReader br=null;

  try{
   br=new BufferedReader(new InputStreamReader(openFileInput(fileName));
   String line=null;
   while((line = br.readLine()) != null)
    {
      sb.append(line);
     }
   }catch(Exception ex){
     //
   }finally{
    if(br!=null)
      br.close();
   }
  return sb.toString();
于 2012-07-04T02:03:36.593 回答
0

isr.read() 将读取单个字符(即第一个字符)。

要获取文件的大小,您可以使用

long length = new File(fileName).length()

有关详细信息,请参阅File.length()函数。

于 2012-07-04T01:58:25.943 回答
0

您可以使用 File 类来查找文件的长度,:

File f=new File("c:\\new\\abc.txt");

f.length();将以字节为单位返回大小您还应该关闭打开的文件。经过isr.close();

于 2012-07-04T01:59:08.617 回答