Tôi đang phát triển một ứng dụng Android trong netbeans. Tôi đang cố gắng đọc tập tin CSV bằng cách sử dụng opencsv. Khi tôi đặt tệp trong thư mục tài nguyên và cố đọc nó từ đó, có lỗi trong khi xây dựng thư mục tài nguyên không hợp lệ. Tôi nên lưu trữ tệp csv ở đâu để có thể đọc tệp mỗi khi ứng dụng bắt đầu?Đọc tệp CSV trong thư mục tài nguyên android
6
A
Trả lời
7
bạn nên đặt tập tin csv trong thư mục tài sản ..
InputStreamReader is = new InputStreamReader(getAssets()
.open("filename.csv"));
BufferedReader reader = new BufferedReader(is);
reader.readLine();
String line;
while ((line = reader.readLine()) != null) {
}
1
bạn có thể sử dụng mã này
try {
InputStream csvStream = assetManager.open(CSV_PATH);
InputStreamReader csvStreamReader = new InputStreamReader(csvStream);
CSVReader csvReader = new CSVReader(csvStreamReader);
String[] line;
// throw away the header
csvReader.readNext();
while ((line = csvReader.readNext()) != null) {
questionList.add(line);
}
} catch (IOException e) {
e.printStackTrace();
}
bạn có thể tải về tập tin CSVReader từ http://sourceforge.net/projects/opencsv/files/latest/download
và nhập khẩu trong dự án của bạn
7
Một số lời khuyên;
- Tạo đối tượng để lưu dữ liệu một hàng vào csv. (
Ex: YourSimpleObject
. Nó cung cấp cho bạn quản lý dữ liệu dễ dàng.) - Đọc tệp hàng theo hàng và gán cho đối tượng. Thêm đối tượng vào danh sách. (Ví dụ:
ArrayList<YourSimpleObject >
)
Code:
private void readAndInsert() throws UnsupportedEncodingException {
ArrayList<YourSimpleObject > objList= new ArrayList<YourSimpleObject >();
AssetManager assetManager = getAssets();
InputStream is = null;
try {
is = assetManager.open("questions/question_bank.csv");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader reader = null;
reader = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String line = "";
StringTokenizer st = null;
try {
while ((line = reader.readLine()) != null) {
st = new StringTokenizer(line, ",");
YourSimpleObject obj= new YourSimpleObject();
//your attributes
obj.setX(st.nextToken());
obj.setY(st.nextToken());
obj.setZ(st.nextToken());
obj.setW(st.nextToken());
objList.add(sQuestion);
}
} catch (IOException e) {
e.printStackTrace();
}
}
0
Sử dụng opencsv:
InputStream is = context.getAssets().open(path);
InputStreamReader reader = new InputStreamReader(is, Charset.forName("UTF-8"));
List<String[]> csv = new CSVReader(reader).readAll();
1
Là một thay thế, hãy nhìn vào uniVocityParsers. Nó cung cấp một số lượng lớn các cách để phân tích các tệp được phân tách. Ví dụ dưới đây tải một tệp Csv (xem trong hình bên dưới) từ thư mục res/raw vào đối tượng InputStream và đọc nó theo cách thức đại diện (bản đồ nơi khóa = Cột & giá trị = CộtValues).
//Gets your csv file from res/raw dir and load into a InputStream.
InputStream csvInputStream = getResources().openRawResource(R.raw.calendario_bolsa);
//Instantiate a new ColumnProcessor
ColumnProcessor columnProcessor = new ColumnProcessor();
//Define a class that hold the file configuration
CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.getFormat().setLineSeparator("\n");
parserSettings.setHeaderExtractionEnabled(true);
parserSettings.setProcessor(columnProcessor);
//Creates a new CsvParser, passing the settings into its construtor:
CsvParser csvParser = new CsvParser(parserSettings);
//Calls parse method, instantiating an InputStreamReader, passing to its constructor the InputStream object
csvParser.parse(new InputStreamReader(csvInputStream));
//Gets the csv data as a Map of Column/column values.
Map<String, List<String>> columnarCsv = columnProcessor.getColumnValuesAsMapOfNames();
Để thêm univocityParsers vào dự án Android của bạn:
compile group: 'com.univocity', name: 'univocity-parsers', version: '2.3.0'
Các vấn đề liên quan
- 1. Cách đọc tệp từ thư mục tài nguyên trong Scala?
- 2. Đọc một tệp từ thư mục tài nguyên
- 3. Tải tệp trong thư mục tài nguyên trong Java
- 4. Danh sách tài nguyên trong thư mục tệp jar?
- 5. Cách đọc tệp csv trong android?
- 6. Đọc tài nguyên từ tệp DLL
- 7. Lưu trữ các tệp xml trong thư mục tài nguyên (WAR), đọc từ mã
- 8. Đọc tệp .txt bên trong thư mục tài liệu
- 9. iPhone: Nhận đường dẫn tệp nằm trong thư mục con của thư mục Tài nguyên
- 10. RandomAccessFile trong tệp tài nguyên thô Android
- 11. Cách lấy danh sách thư mục và tệp từ thư mục tài nguyên trong iPhone?
- 12. Đọc tệp XML từ tài nguyên
- 13. Sao chép thư mục từ thư mục Tài nguyên iPhone vào thư mục tài liệu
- 14. Cách đọc tệp văn bản từ tài nguyên trong Kotlin?
- 15. iPhone dev: tải tệp từ thư mục tài nguyên
- 16. IntelliJ không thấy thư mục tài nguyên
- 17. Đọc tập tin từ thư mục tài nguyên trong Spring Boot
- 18. Đọc tệp .csv trong php
- 19. Đọc CSV từ bên trong Tệp Zip
- 20. Cách ghi tệp vào thư mục tài sản hoặc thư mục thô trong android?
- 21. Android: đường dẫn của thư mục tài sản cho Tệp()?
- 22. Java: Tệp CSV đọc & ghi
- 23. Robolectric ném tài nguyên $ NotFoundException khi cố truy cập tài nguyên trong thư mục thô
- 24. đọc tệp csv gzipped trong python 3
- 25. Đọc tệp từ thư mục bên trong tệp jar
- 26. tomcat 5.5 - sự cố khi đọc tệp tài nguyên
- 27. Phân tích cú pháp JSON trong Android - từ thư mục tài nguyên
- 28. Tạo tệp trong tài nguyên/thư mục nguồn trong java theo lập trình?
- 29. Đọc các tệp tài nguyên Java trong Google AppEngine
- 30. Tài sản Android có thư mục con