.txt 파일의 데이터를 분석 한 다음 데이터베이스에 기록하려고합니다. 나는 한 마디가 있어야하고 그것은 연속으로 첫 글자입니다. 저는 여기에 텍스트 파일로 작업하는 방법입니다안드로이드에서 .txt의 데이터를 처리하고 SQLite에 쓰는 속도를 높이려면 어떻게해야합니까?
private String convertStreamToString(InputStream is)
throws UnsupportedEncodingException {
StringBuilder stringBuilder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
try {
while (true) {
line = reader.readLine();
if (line == null) {
break;
}
allCities = stringBuilder.append(line).toString();
}
} catch (IOException e) {
Log.e("error", e.getMessage());
}
return allCities;
}
private String getAllWordsString() throws IOException {
AssetManager am = context.getAssets();
InputStream is = am.open(Constants.FILE_NAME);
allWords = convertStreamToString(is);
is.close();
return allWords;
}
을 그리고 여기가 databate에 기록하는 방법입니다
public void inputDBFeed(MyWord model) {
ContentValues cv = new ContentValues();
cv.put(Constants.COLUMN_NAME, model.getName());
cv.put(Constants.COLUMN_FIRST_LETTER, model.getFirstLetter());
database.insert(Constants.MAIN_DB_NAME, null, cv);
}
public void prepareDBFeed() {
try {
allWords = this.getAllWordsString();
} catch (IOException e) {
Log.e("Error:", e.getMessage());
}
String[] cities = allWords.split(" ");
for (String oneWord : words) {
App.getDBManager().inputDBFeed(new Word(oneWord, getFirstLetter(oneWord)));
}
}
그러나 장치에서이 프로세스를 실행하면 2 ~ 5 분에 걸립니다. 가능한 한 많이 할 수있는 방법을 제공해주세요.
은 적어도 최적화의 몇 만들 수 있습니다 : 1 - 대신의 BufferedReader의되는 FileChannel을 사용 http://naryad.wordpress.com/2012/03/16/largy-file-copying-bufferedreader- vs-scanner /. 2 - 트랜잭션 사용은 더 빠를뿐만 아니라 더 안전합니다 (모든 데이터가 삽입되거나 없음). –