#android #opencsv
#Android #opencsv
Вопрос:
Я хочу сохранить 8 целых чисел в файле .csv (имя файла будет взято в качестве входных данных из EditText) и извлекать их, когда захочу.
Комментарии:
1. Учебное пособие: codeproject.com/Questions/491823 /…
2. в чем вопрос?
Ответ №1:
Чтобы получить имя файла, вы можете использовать это:
EditText fileNameEdit= (EditText) getActivity().findViewById(R.id.fileName);
String fileName = fileNameEdit.getText().toString();
Затем запишите файл на диск:
try {
String content = "Separe here integers by semi-colon";
File file = new File(fileName ".csv");
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
Чтобы прочитать файл:
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(fileName ".csv"));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
Затем, чтобы иметь целые числа, вы можете использовать функцию разделения:
String[] intArray = sCurrentLine.split(";");
Комментарии:
1. Как мне указать полное имя файла. Я попытался упомянуть «/ storage/ sdcard0 / test» в EditText, но он всегда переходит в блок catch. Нужно ли мне добавлять разрешение WRITE_EXTERNAL_STORAGE в AndroidManifest.xml ? Пожалуйста, помогите. Спасибо.
2. РЕДАКТИРОВАТЬ: Готово! Мне просто нужно было добавить разрешение WRITE_EXTERNAL_STORAGE в AndroidManifest.xml досье.
Ответ №2:
Opencsv не работает на Android из-за проблемы с JDK.
Если вы видите аналог следующего:
05-04 16:13:31.821 25829-25829/? E / AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.pk.opencsvpoc, PID: 25829 java.lang.Ошибка NoClassDefFoundError: не удалось разрешить: Ljava / beans / Introspector;
Это потому, что Android портировал только подмножество java.beans в свою версию java. Вы можете увидеть список того, что поддерживается на https://developer.android.com/reference/java/beans/package-summary
Есть планы переключиться на отражение в opencsv 5.0, но я сомневаюсь, что это удалит все наши зависимости от java.beans. На данный момент лучшее предложение для opencsv — избегать классов com.opencsv.bean, пока Android полностью не поддержит java.beans или мы успешно удалим java.beans.
Другая возможность — попробовать другую библиотеку csv. Я проверил apache commons csv и super-csv, и apache не преобразует в beans, а super-csv использует только отражение.
Источник: https://sourceforge.net/p/opencsv/wiki/FAQ/#getting-noclassdeffounderror-when-using-android
Ответ №3:
CSV — это обычный текстовый файл, где значения разделены символом «;» итак, вы можете записать его, например, с помощью BufferedWriter.