700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java根据txt文件数据得到list_java中如何将一个txt文件中的数字读取到一个ArrayList集合中?...

Java根据txt文件数据得到list_java中如何将一个txt文件中的数字读取到一个ArrayList集合中?...

时间:2022-11-24 08:50:02

相关推荐

Java根据txt文件数据得到list_java中如何将一个txt文件中的数字读取到一个ArrayList集合中?...

展开全部

importjava.io.BufferedReader;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

publicclassFileParser{

privateFilefile;

privateBufferedReaderreader;

privateInputStreamis;

privateInputStreamReaderisReader;

publicFileParser(){}

publicFileParser(StringfilePath){

file=newFile(filePath);

initReader();

}

/**

初始化文件输入32313133353236313431303231363533e78988e69d8331333337613235流,为文件读取做准备

*/

privatevoidinitReader(){

if(file!=null&&file.isFile()&&file.canRead()){

//文件存在可读取并且是“文件”而不是目录

try{

is=newFileInputStream(file);//创建文件输入流

isReader=newInputStreamReader(is);//创建输出流的Reader

reader=newBufferedReader(isReader);//用于按行读取文件

}catch(Exceptione){

e.printStackTrace();

}

}

}

/**

转换文件内容,将文件中的数据转换成List

*/

publicListparse(){

ListlstNumber=null;//最终结果保存在这里

StringtxtLine=null;//临时变量,保存按行读取到的字符串

StringsplitRegexp="([0-9]+)\\s?";//匹配数字的正则表达式

Patternpattern=pile(splitRegexp);//编译正则

Matchermatcher=null;//正则的Matcher对象

//开始读取文件

if(reader!=null){

lstNumber=newArrayList();//初始化List

try{

while((txtLine=reader.readLine())!=null){//按行读取文件

matcher=pattern.matcher(txtLine);//获取matcher实例,准备进行查找

while(matcher.find()){//查找符合条件的匹配组,将结果放入List

lstNumber.add(Integer.valueOf(matcher.group(1)));

}

}

}catch(IOExceptione){

e.printStackTrace();

}finally{

//关闭流

try{

reader.close();

isReader.close();

is.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

returnlstNumber;//返回结果

}

publicstaticvoidmain(String[]args){

FileParserfileParser=newFileParser("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按行取得文件内容,最后用正则表达式来分离出目标数据放入结果集中。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。