lal
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer; public class CsvResolve { public List<String[]> readCsv(String csvfilePath,String encodingCharSet)
{
List<String[]> resultList=new ArrayList<String[]>();
try {
FileInputStream csvfileInputStream = new FileInputStream(csvfilePath);
InputStreamReader csvfileInputStreamReader = new InputStreamReader(csvfileInputStream , encodingCharSet);
BufferedReader csvfileBufferedReader = new BufferedReader(csvfileInputStreamReader);
String line = csvfileBufferedReader.readLine();
String[] firstLineElements=line.split("\t");
//输出第一行的内容
for(int i=;i<firstLineElements.length;i++)
{
System.out.println(i+"\t"+firstLineElements[i]);
}
System.out.println(); while ((line = csvfileBufferedReader.readLine()) != null) {
String[] otherLineElements=line.split("\t");
//如果结尾处有一个或多个tab键,说明,最后缺失的有元素
//先把字符串数组转化为list,让后添加元素,然后再把添加完元素的list
//转化为字符串数组 if(otherLineElements.length<firstLineElements.length)
{
String[] toaddOtherLineElements;
List<String> tempList=new ArrayList<String>();
int i=;
for(;i<otherLineElements.length;i++)
{
if(otherLineElements[i].equals(""))
{
tempList.add(null);
}else{
tempList.add(otherLineElements[i]);
}
}
for(;i<firstLineElements.length;i++)
{
tempList.add(null);
}
toaddOtherLineElements=tempList.toArray(new String[]);;
resultList.add(toaddOtherLineElements);
}
//如果长度相同说明最后的元素存在
else{
String[] toaddOtherLineElements;
List<String> tempList=new ArrayList<String>();
int i=;
for(;i<otherLineElements.length;i++)
{
if(otherLineElements[i].equals(""))
{
tempList.add(null);
}else{
tempList.add(otherLineElements[i]);
}
}
toaddOtherLineElements=tempList.toArray(new String[]);;
resultList.add(toaddOtherLineElements);
}
} csvfileBufferedReader.close(); } catch (FileNotFoundException e) {
// 捕获File对象生成时的异常
e.printStackTrace();
} catch (IOException e) {
// 捕获BufferedReader对象关闭时的异常
e.printStackTrace();
}
return resultList; } public static void main(String[] args) {
CsvResolve csvResolve=new CsvResolve(); List<String[]> csvContent=csvResolve.readCsv("d:/csv/1.csv","utf-8");
for(int i=;i<csvContent.size();i++)
{
String[] temp=csvContent.get(i);
for(int j=;j<temp.length;j++)
{
System.out.println(j+"\t"+temp[j]);
}
System.out.println();
} } }
lal的更多相关文章
- LAL v0.32.0发布,更好的支持纯视频流
Go语言流媒体开源项目 LAL 今天发布了v0.32.0版本.距离上个版本刚好一个月时间,LAL 依然保持着高效迭代的状态. LAL 项目地址:https://github.com/q19120177 ...
- 利用Bootstrap快速搭建个人响应式主页(附演示+源码)
1.前言 我们每个程序员都渴望搭建自己的技术博客平台与他人进行交流分享,但使用别人的博客模板没有创意.做网站后台的开发人员可能了解前端,可是自己写一个不错的前端还是很费事的.幸好我们有Bootstra ...
- js实现多张图片每隔一秒换一张图片
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlkAAAHWCAIAAADLlAuAAAAgAElEQVR4nOzd5XNc157w+/l7bt2n6t
- java web学习总结(十一) -------------------基本概念使用Cookie进行会话管理
一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...
- ubuntu 13.10 monodevelop3 安装
版本 ubuntu 13.10 桌面模式默认:unity :文件管理器:nautilus
- Tomcat双向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端超安全通信
紧接着<Tomcat单向Https验证搭建,亲自实现与主流浏览器.Android/iOS移动客户端安全通信>,此处演示下更安全的双向Https认证的通信机制,为了清晰明了,以下进行单独描述 ...
- Tomcat单向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端安全通信
众所周知,iOS9已经开始在联网方面默认强制使用Https替换原来的Http请求了,虽然Http和Https各有各的优势,但是总得来说,到了现在这个安全的信息时代,开发者已经离不开Https了. 网上 ...
- linux下的触控板手势xSwipe and tag
这个最初是采用的touchegg.开始没有效果,后来网上发现是因为需要禁用系统的2指3指操作参考 http://askubuntu.com/questions/266057/cant-get-touc ...
- js 有用的代码
1. 如何创建嵌套的过滤器: //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹配的部分.在这种情况下, //查询删除了任何没(:not)有(:has) //包含class为“s ...
随机推荐
- [Effective JavaScript 笔记]第15条:当心局部块函数声明笨拙的作用域
嵌套函数声明.没有标准的方法在局部块里声明函数,但可以在另一个函数的顶部嵌套函数声明. function f(){return "global"} function test(x) ...
- Procrustes Analysis普氏分析法
选取N幅同类目标物体的二维图像,并用上一篇博文的方法标注轮廓点,这样就得到训练样本集: 由于图像中目标物体的形状和位置存在较大偏差,因此所得到的数据并不具有仿射不变性,需要对其进行归一化处理.这里采用 ...
- HDU 1713 最小公倍数与最大公约数的问题 相遇周期
欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) 相遇周期 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/ ...
- SPFA算法心得
SPFA算法是改进后的Bellman-Ford算法,只是速度更快,而且作为一个算法,它更容易理解和编写,甚至比Dijkstra和B-F更易读(当然,Floyd是另一回事了,再也没有比Floyd还好写的 ...
- 记录:js删除数组中某一项或几项的几种方法
1:js中的splice方法 splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...
- jQuery Ajax 操作函数
jQuery Ajax 操作函数 jQuery 库拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. 函数 描述 jQuery.ajax() 执行异步 H ...
- Segment Tree Modify
For a Maximum Segment Tree, which each node has an extra value max to store the maximum value in thi ...
- mybatis3 :insert返回插入的主键(selectKey)
Mysql: 主键自增长. 加上:keyProperty="id"就可以获得了. <insert id="insert" parameterType=&q ...
- iOS 和 Android 触摸事件传递
先看文章,写得很好 ios 触摸事件传递 http://www.cnblogs.com/Quains/p/3369132.html 另外一篇 http://blog.csdn.net/yongyinm ...
- Markdown 语法速查表
Markdown 语法速查表 1 标题与文字格式 标题 # 这是 H1 <一级标题> ## 这是 H2 <二级标题> ###### 这是 H6 <六级标题> 文 ...