2012-07-04 22 views
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; 
} 

文件中包含我得到「芸香」 還當我創建該文件的第一個字母不能是大寫的單詞「真」 ?如果我使用大寫的文件是從來沒有找到我猜這兩個不相關。

+0

本文件中包含什麼?只是字符序列爲「真」,還是以一個字節的長度信息開始? –

+0

方法'isr.read()'讀取第一個字符。 – adatapost

+1

只是「真」這個詞,它是一個基本的文本文件。 – John

回答

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(); 
1
char[] inputBuffer = new char[isr.read()]; //str.length() 

這是不是讀出你的讀者的字符?

編輯:http://docs.oracle.com/javase/1.4.2/docs/api/java/io/InputStreamReader.html

+0

isr.read我以爲只會給文件的長度。 我該怎麼試試? – John

+0

不依據:http://docs.oracle.com/javase/1.4.2/docs/api/java/io/InputStreamReader.html –

+1

@John - 不,它從文件的內容讀取。如果你需要文件的長度,從這個名字構造一個File對象,然後調用'length()'。但是,這會告訴你字節的長度,而不是字符的長度。根據編碼的不同,某些字符可能會使用多個字節。 –

0

isr.read()將讀取的單個字符(即第一個字符)。

要獲取文件的大小,你可以使用

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

File.length()功能的詳細信息。

0

您可以使用File類找到一個文件的長度,:

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

f.length();會以字節爲單位 返回的大小也應關閉打開的文件。通過isr.close();