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」と表示されます。最初の文字を大文字にすることはできませんか? 大文字を使用すると、ファイルが見つかりません。2つは関連していないと思います。

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

そのファイルがtextfile の場合は、 経由で読み取ります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() は、1 文字 (つまり、最初の文字) を読み取ります。

ファイルのサイズを取得するには、次を使用できます

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 に答える