CSV 文件是Excel 的标准文件格式,在开发过程中经常需要格式化输出数据。CSV 的格式非常简单,都是一行一行存储的,同一行不同列之间用逗号隔开。下面的代码即为输出CSV 格式文件。
package com.test.mytest;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.os.Environment;
public class MyTestClass1 {
public static final String mComma = ",";
private static StringBuilder mStringBuilder = null;
private static String mFileName = null;
public static void open() {
String folderName = null;
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
if (path != null) {
folderName = path +"/CSV/";
}
}
File fileRobo = new File(folderName);
if(!fileRobo.exists()){
fileRobo.mkdir();
}
mFileName = folderName + "log.csv";
mStringBuilder = new StringBuilder();
mStringBuilder.append("column1");
mStringBuilder.append(mComma);
mStringBuilder.append("column2");
mStringBuilder.append(mComma);
mStringBuilder.append("column3");
mStringBuilder.append("\n");
}
public static void writeCsv(String value1, String value2, String value3) {
mStringBuilder.append(value1);
mStringBuilder.append(mComma);
mStringBuilder.append(value2);
mStringBuilder.append(mComma);
mStringBuilder.append(value3);
mStringBuilder.append("\n");
}
public static void flush() {
if (mFileName != null) {
try {
File file = new File(mFileName);
FileOutputStream fos = new FileOutputStream(file, false);
fos.write(mStringBuilder.toString().getBytes());
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
throw new RuntimeException("You should call open() before flush()");
}
}
}