我試圖在Java中標記大量的文本。當我說大時,我的意思是一次完整的書籍章節。我使用書中的單個頁面編寫了代碼的第一份草稿,並且一切正常。現在,我正在嘗試處理整個章節,事情不起作用。它正確處理了本章的一部分,然後它就停止了。我應該如何處理Java中真正大量的文本?
下面是所有相關的代碼
File folder = new File(Constants.rawFilePath("eng"));
FileHelper fileHelper = new FileHelper();
BPage firstChapter = new BPage();
BPage firstChapterSpanish = new BPage();
File[] allFiles = folder.listFiles();
//read the files into memory
ArrayList<ArrayList<String>> allPages = new ArrayList<ArrayList<String>>();
//for the english
for(int i=0;i<allFiles.length;i++)
{
String filePath = Constants.rawFilePath("/eng/metamorph_eng_"+String.valueOf(i)+".txt");
ArrayList<String> pageToAdd = fileHelper.readFileToMemory(filePath);
allPages.add(pageToAdd);
}
String allPagesAsString = "";
for(int i=0;i<allPages.size();i++)
{
allPagesAsString = allPagesAsString+fileHelper.turnListToString(allPages.get(i));
}
firstChapter.setUnTokenizedPage(allPagesAsString);
firstChapter.tokenize(Languages.ENGLISH);
folder = new File(Constants.rawFilePath("spa"));
allFiles = folder.listFiles();
//for the spanish
for(int i=0;i<allFiles.length;i++)
{
String filePath = Constants.rawFilePath("/eng/metamorph_eng_"+String.valueOf(i)+".txt");
ArrayList<String> pageToAdd = fileHelper.readFileToMemory(filePath);
allPages.add(pageToAdd);
}
allPagesAsString = "";
for(int i=0;i<allPages.size();i++)
{
allPagesAsString = allPagesAsString+fileHelper.turnListToString(allPages.get(i));
}
firstChapterSpanish.setUnTokenizedPage(allPagesAsString);
firstChapterSpanish.tokenize(Languages.SPANISH);
fileHelper.writeFile(firstChapter.getTokenizedPage(), Constants.partiallyprocessedFilePath("eng_ch_1.txt"));
fileHelper.writeFile(firstChapterSpanish.getTokenizedPage(), Constants.partiallyprocessedFilePath("spa_ch_1.txt"));
}
即使我讀的所有在我希望我的文字是目錄中的文件,只有文件的第一政變被添加到我正在處理的字符串。好像過了一段時間代碼仍然可以運行,但它只是在我的字符串中添加字符直到某個點。
我必須改變什麼才能一次處理所有文件?
定義「只是停止」。你有錯誤信息嗎?如果是這樣,那麼信息是什麼? (如果不是這樣,它可能是代碼中的錯誤,或者它實際上並沒有停止,但是交換不夠嚴重,無法將性能拖入抓取中。)到目前爲止,您嘗試診斷問題的目的是什麼? – keshlam
任何空的catch塊?強烈考慮使用日誌框架做一些日誌記錄。 –
代碼中的哪個點「停止」?看起來你正在做很多字符串連接('allPagesAsString'),所以你可能想用['StringBuilder']替換它(http://docs.oracle.com/javase/7/docs/api/ java/lang/StringBuilder.html),效率更高。看看[這個問題]的一些答案(http://stackoverflow.com/questions/4645020/when-to-use-stringbuilder-in-java)。 – andersschuller