论java从TXT文档中提取某一列中的数字然后相加的方法
当我们获得一个长长长的文档想要提取其中的数字,如下图
如果想要用java算出进球的总数(其实用sql更方便,但是我们要秀操作)
以下为简单科普,大牛请直接看最下边的代码
bufferdInputStream输入流
创建一个 BufferedInputStream
并保存其参数,即输入流 in
,以便将来使用。创建一个内部缓冲区数组并将其存储在 buf
中(API
buf:所谓的内部缓冲区数组,之后的输入得先存入其中
FileInputStream(File file)文件输入流
通过打开一个到实际文件的连接来创建一个 FileInputStream
,该文件通过文件系统中的 File
对象 file
指定(API)
可以访问文件里的数据,如TXT
BufferedReader字符输入流
BufferedInputStream
为另一个输入流(FileInputStream)添加一些功能,即缓冲输入以及支持 mark
和 reset
方法的能力。
在创建 BufferedInputStream
时,会创建一个内部缓冲区数组。(API)
需要用到其中的readLine()方法,Integer包装类(下方有详细介绍~)
代码如下
//路径名,这里注意/和\\
"/"
表示 UNIX 中的根目录,"\\"
表示 Microsoft Windows UNC 路径名。
"\\"是系统盘符"/"的转义字符(这里不要搞反了。。)
String pathname = "E:\\txt.txt";
//写入路径
File filename = new File(pathname);
//创建一个输入流,这里注意编码格式~有坑
InputStreamReader reader = new InputStreamReader(new FileInputStream(filename),"gbk");
BufferedReader br = new BufferedReader(reader);//字符输入流
String line = "";//接收数据
int sum = 0;
while(line != null){
line = br.readLine();//一次读入一行
//split返回的是一个数组,将line 切割传给每个数组下标
String pp [] = new String[5];
//这里注意split会空指针异常,这里得加个判断
if(line ==null ){
break;
}
pp = line.split(" ");//按空格分隔
//Integer包装类,将split返回的数组pp[5]
Integer year = Integer.valueOf(pp[4].substring(0, 1));//不取4
sum += year.intValue();
}
System.out.println("sum:"+sum);
//有点凌乱,,如有错误还请不吝赐教~