CSV 文件是Excel 的标准文件格式,在开发过程中经常需要格式化输出数据。CSV 的格式非常简单,都是一行一行存储的,同一行不同列之间用逗号隔开。下面的代码即为输出CSV 格式文件。
public class SaveToCsv { public static final String mComma = ","; private static StringBuilder mStringBuilder = null; private static String mFileName = null; private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.US);//日期格式; private static SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss", Locale.US);//日期格式; 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 + dateFormat.format(new Date())+".csv"; mStringBuilder = new StringBuilder(); mStringBuilder.append("时间");//第一列标题 mStringBuilder.append(mComma); mStringBuilder.append("识别次数");//第二列标题 mStringBuilder.append(mComma); mStringBuilder.append("识别成功");//第三列标题 mStringBuilder.append(mComma); mStringBuilder.append("置信度");//第四列标题 mStringBuilder.append(mComma); mStringBuilder.append("出错");//第五列标题 mStringBuilder.append(mComma); mStringBuilder.append("错误码");//第六列标题 mStringBuilder.append("\n"); } public static void writeCsv(String countRecognition, String countSuccess, String confidience, String countfail, String errorNum) { mStringBuilder.append(timeFormat.format(new Date()) );//第一列内容 mStringBuilder.append(mComma); mStringBuilder.append(countRecognition);//第二列内容 mStringBuilder.append(mComma); mStringBuilder.append(countSuccess);//第三列内容 mStringBuilder.append(mComma); mStringBuilder.append(confidience);//第四列内容 mStringBuilder.append(mComma); mStringBuilder.append(countfail);//第五列内容 mStringBuilder.append(mComma); mStringBuilder.append(errorNum);//第六列内容 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()"); } } }
调用示例如下:
SaveToCsv.writeCsv(""+countRecognize,"1",""+confidience,"0","");
SaveToCsv.flush();