Android 读取csv格式数据文件
前言
什么是csv文件呢?百度百科上说 CSV是逗号分隔值文件格式,也有说是电子表格的,既然是电子表格,那么就可以用Excel打开,那为什么要在Android中来读取这个.csv格式的文件呢?因为现在主流数据格式是采用的JSON,但是另一种就是.csv格式的数据,这种数据通常由数据库直接提供,进行读取。下面来看看简单的使用吧
正文
首先还是先来创建一个项目,名为ReadCSV
准备.csv格式的文件,点击和风APILocationList
下载ZIP,保存到本地,然后解压,这个时候在你的项目文件中新建一个assets文件夹,注意创建的位置
然后打开刚才解压后的文件夹,把iso3166.csv复制到这个新建的文件夹下。
这里先以Text的格式放置,这个时候你会发现右上角多了一个两个操作选项(如果你是第一次复制csv文件的话),分别是安装插件和同意忽略
Android Studio编译器默认是不能直接使用.csv文件的,所以要安装插件,点击Install plugins ,会出现
等待下载
点击OK就会配置你下载的插件,Android Studio每次配置插件之后都要重启一下,插件才会生效的,再重启之前,再安装一个翻译插件吧,如果你已经安装过了,就直接重启吧。 安装翻译插件,点击File → Settings…
点击Plugins,切换到Marketplace ,输入 Translation,等待搜索结果
如上图所示就是第一个,点击Install进行下载安装,安装好之后
点击Restart IDE 进行重启,静静地等待编译通过,这个时候你可以泡一杯咖啡。
可以看到这个时候你的编译器已经可以正常打开.csv格式文件了,然后这个文件中的第一行到第四行都删掉,因为都是没有用的数据,
可以看到都是用逗号分隔开的,这就映证了百度百科的说法,那么现在就可以开始读取这个文件里的内容了,其实就跟读取txt差不多的。 打开MainActivity 然后在onCreate中写入如下代码
InputStreamReader is = null;
try {
is = new InputStreamReader(getAssets().open("iso3166.csv"));
BufferedReader reader = new BufferedReader(is);
reader.readLine();//读取每行
String line;
while ((line = reader.readLine()) != null) {
Log.d("line -->",line);
}
} catch (IOException e) {
e.printStackTrace();
}
代码很简单的,看一下就明白了,运行一下
这样数据就读取到了,那么我们刚才安装的翻译插件起到什么作用呢?你有没有这样的疑惑呢?下面来使用这个翻译插件,选中MainActivity,鼠标右键
第一个是翻译,第二个是翻译和替换,点击第一个
是不是很爽呢?再也不用担心命名的问题了,知道用法之后,我们进入到iso3166.csv,翻译第一行的第一个单词
可以看到是阿富汗,这个时候我们再运行一下
你以为会出现乱码吗?实际上是并没有出现,但是你会发现第一行的数据没了,天杀的AS居然偷我数据。其实这还真不怪AS,这是BufferedReader.readLine()方法读取文件第一行的bug,首行第一个字符会是一个空字符,所以跳过了,这个Bug在我这里并不需要解决,可以利用的,刚好第一行的数据没有实际意思,就类似于表的表头啊,你都跳过了,我就懒得去处理了,何乐而不为呢?你说是吧!这样基本上就说完了,你可以把这些数据存到Sqlite里面,在使用的时候再调用就可以,如果你想看这方便的内容请留言给我,我给你补充上。
- 洛谷P1137 旅行计划
- 洛谷P1722 矩阵 II
- 洛谷P1976 鸡蛋饼
- 洛谷P1420 最长连号
- 各种读入方式速度比较
- 美团NLP实习面试总结一 基本知识4 数据结构二 NLP相关技术1 LSTM2 介绍实体链接与实体映射3 解释随机游走的原理及作用4 命名实体识别
- 【下载】苹果发布Turi Create机器学习框架,5行代码开发图像识别
- codevs 4163 hzwer与逆序对
- ASP.NET Core提供模块化Middleware组件
- CSS预处理器的对比 — sass、less和stylus
- Gensim实现Word2Vec的Skip-Gram模型简介快速上手对语料进行分词使用gensim的word2vec训练模型
- React第三方组件4(状态管理之Reflux的使用②TodoList上)
- 机器学习(六)Sigmoid函数和Softmax函数1 Sigmoid函数2 Softmax函数
- React第三方组件4(状态管理之Reflux的使用①简单使用)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Vue.js点击按钮弹出隐藏菜单的几种方式
- 【Vue.js】Vue.js组件库Element中的单选框、多选框、输入框和计数器
- 【Vue.js】Vue.js组件库Element的基础用法
- 常见的图像处理技术
- docker浅入深出续
- 【21期】你能说说Java中Comparable和Comparator的区别吗
- 昨天晚上熬夜整理的Java注解相关学习笔记
- 对图标的坐标轴进行调整
- Vue 开发技巧总结
- 35.opengl PBR-光照
- 聊聊claudb的list command
- nginx add_header 仅部分或一次生效的原因与解决办法
- 聊聊claudb的keys command
- 聊聊claudb的server command
- 聊聊claudb的Database