Android如何读写CSV文件方法示例

 更新时间:2017年08月29日 09:45:59   作者:RustFisher  
CSV 文件是Excel 的标准文件格式,在开发过程中经常需要格式化输出数据。CSV 的格式非常简单,都是一行一行存储的,同一行不同列之间用逗号隔开。下面这篇文章主要给大家介绍了关于Android如何读写CSV文件的相关资料,需要的朋友可以参考下。

前言

本文主要给大家介绍的是关于Android读写CSV文件的相关内容,CSV也就是Comma-Separated Values逗号分隔的文本文件,

读写csv文件和读写普通文件类似;写的时候给数据之间添加上逗号。

设定存储路径和文件名:

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来向文件尾部添加数据

FileOutputStream.write(byte[] data)向文件流写入字节数据。

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();// 这里创建的是目录
   }
  }
  @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读取每一行内容;读出来的数据带有逗号分隔符

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());// 显示
    }
   });
  }
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Android中layer-list基本使用详解

    Android中layer-list基本使用详解

    这篇文章主要介绍了Android中layer-list基本使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Android ADB常用命令总结

    Android ADB常用命令总结

    本文主要给大家分享的是一些我搜集的一些Android ADB(Android Debug Bridge)命令,在手动或自动构建和测试过程中它们非常好用。希望大家能够喜欢。
    2015-12-12
  • Android 开发延时调用的几种方法

    Android 开发延时调用的几种方法

    本篇文章主要介绍Android 延迟, 在Android 程序开发过程中经常会遇到程序推迟时间执行,这里整理了几种方法,以便Android 开发的朋友参考
    2016-07-07
  • Android自定义View实现地铁显示牌效果

    Android自定义View实现地铁显示牌效果

    这篇文章主要为大家详细介绍了Android自定义View实现地铁显示牌效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Android 4.4以上

    Android 4.4以上"沉浸式"状态栏效果的实现方法

    Android与ios效果互仿早已不是什么稀奇的事,我猜大概这个效果来自ios吧,有争议说这种效果不能叫做沉浸式,叫透明状态栏更合适,我也感觉这和沉浸式的含义不太一致。但是大家都这么叫了,那就这样呗。下面来一起看看关于Android 4.4以上"沉浸式"效果的实现方法。
    2016-09-09
  • Android 7.0中拍照和图片裁剪适配的问题详解

    Android 7.0中拍照和图片裁剪适配的问题详解

    这篇文章主要介绍了Android 7.0中拍照和图片裁剪适配的相关问题,文中通过示例代码介绍的很详细,对大家具有一定的参考价值,有需要的朋友们下面来一起学习学习吧。
    2017-02-02
  • Android自定义View图片按Path运动和旋转

    Android自定义View图片按Path运动和旋转

    这篇文章主要为大家详细介绍了Android自定义View图片按Path运动和旋转,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 可支持快速搜索筛选的Android自定义选择控件

    可支持快速搜索筛选的Android自定义选择控件

    这篇文章主要为大家详细介绍了可支持快速搜索筛选的Android自定义选择控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android中Socket的应用分析

    Android中Socket的应用分析

    这篇文章主要介绍了Android中Socket的应用,结合实例形式分析了Android中socket通信的实现技巧与相关注意事项,需要的朋友可以参考下
    2016-10-10
  • 详解Android截屏事件监听

    详解Android截屏事件监听

    本篇文章主要介绍了Android截屏事件监听,Android系统没有直接对截屏事件监听的接口,本文介绍了2种方法,有兴趣的可以了解一下。
    2016-12-12

最新评论