2017-07-03 68 views
1

我用掃描儀讀取阿拉伯語文件,並存儲在文本文件中的一個ArrayList無法讀取阿拉伯語文本文件的第一個字

和我有一個包含一些的話,正反字字典與他們的利率。

例如: سعيد+5 -4سيء

然後我檢查與字典文本文件中的每個字,如果字是負增長的負計數器,如果它是正增長的積極櫃檯最後進行比較以確定文件是正面還是負面

它適用於英語,但不適用於阿拉伯語,出於某種原因,它跳過了數組上的第一個單詞,即使它在字典上完全匹配 以及如果我在文本文件(新行)的開頭按Enter鍵,它可以很好地工作 我想作爲替代,以添加新線到ArrayList和文件複製到新的生產線,但它不工作,它必須按加入Enter鍵

for (String word: wordsList) { // loop through user file 

    try { // compare words with dictionary 

    String line; 
    // read from the Dictionary file 
    File fileDir = new File("C:\\Users\\Ameera\\Desktop\\Dictionary.txt"); 
      BufferedReader inDict = new BufferedReader(new InputStreamReader(
        new FileInputStream(fileDir), "utf-8")); 

    while ((line = inDict()) != null) { 

    String strSplit[] = line.split("\t"); // Split Dictionary line after each tab to get the word only without its rate 
    // example will get (سعيد, سيد) only 
    /* سعيد +5 
     سيء   -4 
    */ 

    if (strSplit[0].equals(word)) { 


     int rate2 = Integer.parseInt(strSplit[1]); // get word rate 

     sent += rate2; // add word rate to file totoal rate 

    } 

    } 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
    } 
+0

使用'BufferedReader reader = new BufferedReader(new InputStreamReader(「filePath」,「UTF-8」))''。請參閱https://stackoverflow.com/a/11377816/6743203 –

+0

@JaySmith是對的,我想。您的代碼將以平臺編碼讀取文件(很可能不是UTF-8,如果您在Windows上),並且您的文本文件可能是UTF-8幷包含字節順序標記,這可能會干擾解析第一行。 – xmjx

+0

感謝您的回覆,實際上我曾嘗試過,甚至我的文件編碼爲UTF-8,但我仍然不知道爲什麼它會跳過第一個單詞並在我按第一行 處的Enter時工作是我有什麼 BufferedReader inDict = new BufferedReader( new InputStreamReader(new FileInputStream(fileDir2),「UTF-8」)); – Qubayl

回答