java中如何将一个txt文件中的数字读取到一个ArrayList集合中?

txt中有很多数字,数字与数字之间有空格,要把这些数字截取出来放到ArrayList中... txt中有很多数字,数字与数字之间有空格,要把这些数字截取出来放到ArrayList中 展开
 我来答
syau552king
推荐于2016-09-28 · TA获得超过247个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:199万
展开全部
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FileParser {
private File file;
private BufferedReader reader;
private InputStream is;
private InputStreamReader isReader;
public FileParser() {}
public FileParser(String filePath) {
file = new File(filePath);
initReader();
}
/**
    初始化文件输入流,为文件读取做准备
*/
private void initReader() {
if(file != null && file.isFile() && file.canRead()) {
//文件存在可读取并且是“文件”而不是目录
try {
is = new FileInputStream(file);//创建文件输入流
isReader = new InputStreamReader(is);//创建输出流的Reader
reader = new BufferedReader(isReader);//用于按行读取文件
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
    转换文件内容,将文件中的数据转换成List<Integer>
*/
public List<Integer> parse() {
List<Integer> lstNumber = null;//最终结果保存在这里
String txtLine = null;//临时变量,保存按行读取到的字符串
String splitRegexp = "([0-9]+)\\s?";//匹配数字的正则表达式
Pattern pattern = Pattern.compile(splitRegexp);//编译正则
Matcher matcher = null;//正则的Matcher对象
//开始读取文件
if(reader != null) {
lstNumber = new ArrayList<Integer>();//初始化List
try {
while((txtLine = reader.readLine()) != null) {//按行读取文件
matcher = pattern.matcher(txtLine);//获取matcher实例,准备进行查找
while(matcher.find()) {//查找符合条件的匹配组,将结果放入List
lstNumber.add(Integer.valueOf(matcher.group(1)));
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
try {
reader.close();
isReader.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return lstNumber;//返回结果
}
public static void main(String[] args) {
FileParser fileParser = new FileParser("D:\\test.txt");
System.out.println(fileParser.parse());
}
}

test.txt内容格式如下:

1 10 100 99 5 76 82 93

20 123 75 1232 85 12


程序核心就是用正则表达式来查找文件中符合要求的内容,效率要比字符串的分割操作高。大体流程就是判断文件是不是存在且可读取,然后通过BufferedReader按行取得文件内容,最后用正则表达式来分离出目标数据放入结果集中。

shy2850
推荐于2017-11-24 · TA获得超过6774个赞
知道大有可为答主
回答量:2505
采纳率:55%
帮助的人:1585万
展开全部
对读取出来的String一个个字符循环

不是'0'-'9'的字符就换一下

前一个空格的直接去掉,前一个不是空格的换成空格。

这样出来以后就只有数字了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友27e4990
2015-08-11 · TA获得超过265个赞
知道小有建树答主
回答量:221
采纳率:60%
帮助的人:78万
展开全部
让我的话,我只能用笨办法一行一行的读取成string然后再放进去。
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
while(line!=null){
//存放到list里
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式