CSV全名是Comma Separated Value,
它是一種用逗號作為分隔的檔案類型,
常用於資料庫資料的匯入與匯出,
非常簡單、方便的讓程式讀取,
且因為簡潔,
所以不需要多龐大的系統便能開啟CSV檔進行檔案編輯。
匯入與匯出將分隔成兩天分享!
今天要先分享如何配合使用前幾天的檔案選擇器,
[Android Studio菜鳥的學習分享]使用他人製作元件模板
將CSV檔的資料匯入進APP內使用。
匯入CSV檔的資料至 csvArrayList 。
案匯入的變數。
csvDataList.get(0);
csvDataList.get(1);
csvDataList.get(2);
csvDataList.get(3);
csvDataList.get(4);
csvDataList.get(5);
csvDataList.get(0) -> 1
csvDataList.get(1) -> apple
csvDataList.get(2) -> 2
csvDataList.get(3) -> banana
csvDataList.get(4) -> 3
csvDataList.get(5) -> cherry
讀取CSV檔的方法撰寫在這邊,
方便使用和讓MainActivity乾淨一點。
public class ReadCSVThread extends Thread{
}
String fileName;
ArrayList<String> csvArrayList = new ArrayList<String>();
將取得的檔案位置放入變數fileName
public ReadCSVThread(String fileName){
this.fileName = fileName;
}
@Override
public void run(){
super.run();
}
File csvFile = new File(fileName);
try{
}
catch (Exception error){
error.printStackTrace();
}
BufferedReader reader = new BufferedReader(new FileReader(csvFile));
1 .csvString:
放置目前閱讀器讀取資料
2.arrayFinish:
放置使用split分割完的資料
String csvString;
String[] arrayFinish;
while ((csvString = reader.readLine()) != null){
}
arrayFinish = csvString.split(",");
for(String arrayFinishData:arrayFinish){
csvArrayList.add(arrayFinishData);
}
reader.close();
fileName方便放入CSV檔案位置
private void openCsv(String fileName){
}
if(fileName != ""){
}
else {
textOutput.setText("請選擇匯入檔案!!");
}
private ReadCSVThread readCSVThread;
private ArrayList<String> csvDataList = new ArrayList<String>();
將檔案位置給予方法
readCSVThread = new ReadCSVThread(fileName);
開始讀檔
readCSVThread.run();
csvDataList.clear();
csvDataList.addAll(readCSVThread.csvArrayList);
textOutput.setText("請選擇匯入檔案!!");
以下介紹請看
[Android Studio菜鳥的學習分享]使用他人製作元件模板
textOutput = (TextView) findViewById(R.id.textOutput);
btnFileInput = (Button) findViewById(R.id.btnFileInput);
btnFileOutput = (Button) findViewById(R.id.btnFileOutput);
btnFileInput.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(permissionGranted()) {
SingleFilePickerDialog singleFilePickerDialog = new SingleFilePickerDialog(MainActivity.this,
() -> textOutput.setText("Canceled!!"),
files -> openCsv(files[0].getPath()));
singleFilePickerDialog.show();
}
else{
requestPermission();
}
}
});
以下介紹請看
[Android Studio菜鳥的學習分享]使用他人製作元件模板
private boolean permissionGranted(){
return ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
}
private void requestPermission(){
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}