Android如何讀寫CSV文件方法示例
前言
本文主要給大家介紹的是關(guān)于Android讀寫CSV文件的相關(guān)內(nèi)容,CSV也就是Comma-Separated Values逗號(hào)分隔的文本文件,
讀寫csv文件和讀寫普通文件類似;寫的時(shí)候給數(shù)據(jù)之間添加上逗號(hào)。
設(shè)定存儲(chǔ)路徑和文件名:
private static final String FILE_FOLDER = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "AboutView" + File.separator + "data"; private static final String FILE_CSV = "about_data.csv";
寫CSV文件
使用FileOutputStream來向文件尾部添加數(shù)據(jù)
FileOutputStream.write(byte[] data)向文件流寫入字節(jié)數(shù)據(jù)。
class WriteData2CSVThread extends Thread {
short[] data;
String fileName;
String folder;
StringBuilder sb;
public WriteData2CSVThread(short[] data, String folder, String fileName) {
this.data = data;
this.folder = folder;
this.fileName = fileName;
}
private void createFolder() {
File fileDir = new File(folder);
boolean hasDir = fileDir.exists();
if (!hasDir) {
fileDir.mkdirs();// 這里創(chuàng)建的是目錄
}
}
@Override
public void run() {
super.run();
createFolder();
File eFile = new File(folder + File.separator + fileName);
if (!eFile.exists()) {
try {
boolean newFile = eFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream os = new FileOutputStream(eFile, true);
sb = new StringBuilder();
for (int i = 0; i < data.length; i++) {
sb.append(data[i]).append(",");
}
sb.append("\n");
os.write(sb.toString().getBytes());
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
讀CSV文件
使用BufferedReader讀取每一行內(nèi)容;讀出來的數(shù)據(jù)帶有逗號(hào)分隔符
class ReadCSVThread extends Thread {
String fileName;
String folder;
public ReadCSVThread(String folder, String fileName) {
this.folder = folder;
this.fileName = fileName;
}
@Override
public void run() {
super.run();
File inFile = new File(folder + File.separator + fileName);
final StringBuilder cSb = new StringBuilder();
String inString;
try {
BufferedReader reader =
new BufferedReader(new FileReader(inFile));
while ((inString = reader.readLine()) != null) {
cSb.append(inString).append("\n");
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
mCSVTv.setText(cSb.toString());// 顯示
}
});
}
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Android自定義View仿QQ等級(jí)天數(shù)進(jìn)度
這篇文章主要為大家詳細(xì)介紹了Android自定義View仿QQ等級(jí)天數(shù)進(jìn)度效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
Android Studio 實(shí)現(xiàn)文檔注釋的快捷鍵
這篇文章主要介紹了Android Studio 實(shí)現(xiàn)文檔注釋的快捷鍵,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android來電監(jiān)聽和去電監(jiān)聽實(shí)現(xiàn)代碼
本文是關(guān)于來點(diǎn)監(jiān)聽和去電監(jiān)聽展開問題,通過實(shí)例代碼講解,對(duì)android來電監(jiān)聽和去電監(jiān)聽的相關(guān)知識(shí)感興趣的朋友一起看看吧2017-06-06
Android實(shí)現(xiàn)支付寶6位密碼輸入界面
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)支付寶6位密碼輸入界面的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Android利用Badge組件實(shí)現(xiàn)未讀消息小紅點(diǎn)
在?App?的運(yùn)營(yíng)中,活躍度是一個(gè)重要的指標(biāo),日活/月活……為了提高活躍度,就發(fā)明了小紅點(diǎn)。這一篇,來介紹一個(gè)徽標(biāo)(Badge)組件,能夠快速搞定應(yīng)用內(nèi)的小紅點(diǎn),希望對(duì)大家有所幫助2023-01-01
一篇文章弄懂Android自定義viewgroup的相關(guān)難點(diǎn)
這篇文章主要給大家介紹了關(guān)于如何通過一篇文章弄懂Android中自定義viewgroup的一些相關(guān)難點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06

