读取文件时丢失第一个字母

时间:2012-07-04 01:50:34

标签: java android file-io

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

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” 我得到“芸香” 当我创建文件时,第一个字母不能是大写?如果我使用资本,文件永远不会被发现我猜这两个是不相关的。

4 个答案:

答案 0 :(得分:1)

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

这不会读取读者的角色吗?

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

答案 1 :(得分: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();

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分:0)

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

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

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