java读取TXT文件 我把10万个数字存在了TXT文件中以空格分隔 我想读出来该怎么办(用java )
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java读取TXT文件 我把10万个数字存在了TXT文件中以空格分隔 我想读出来该怎么办(用java )相关的知识,希望对你有一定的参考价值。
引用上楼的回答:Scanner scanner = new Scanner(new File("F:\\\\*.txt"));
scanner.useDelimiter("\\\\s");
while(scanner.hasNextInt())
System.out.println(scanner.nextInt());
我再给你解释一下:
useDelimiter(Pattern pattern)这个方法是Scanner中用于设置分隔符的,默认情况下scanner分割符是空格,你这个程序中就是用正则表达式来设置分隔符,"\\\\s*fish\\\\s*"前面的一个\\\\s*表示空格出现0次或多次接着出现fish接着出现0个或多个空格,只要scanner扫描遇到的数据符合这个正则表达式,前面的就当一个数据就可以用Scanner中的next()返回取得数据。
通过这个解释你就可以知道如何利用useDelmiter来消除空格。追问
哥采用你这种方法读出的数据不全啊!
参考技术A public class Testpublic static void main(String[] args) throws IOException
RandomAccessFile raf = new RandomAccessFile("file", "r");
ArrayList<Integer> nums = new ArrayList<Integer>();
String cLine = raf.readLine();
String mes = "";
while (cLine != null)
mes += cLine;
if (cLine.endsWith(" "))
getNums(mes, nums);
mes = "";
cLine = raf.readLine();
getNums(mes, nums);
public static void getNums(String str, List<Integer> list)
String[] nums = str.split(" ");
for (String num : nums)
list.add(Integer.parseInt(num));
参考技术B Scanner scanner = new Scanner(new File("F:\\*.txt"));
scanner.useDelimiter("\\s");
while(scanner.hasNextInt())
System.out.println(scanner.nextInt());
参考技术C 用流读取数据,fileinputStream,然后放入buffered....然后一行一行读取,将结果放入stringbuffer中追问
能说得详细点吗?
参考技术D 一遍读入,一遍切割java 怎么读取文件中的字符和数据
如果有一个txt文件,里面的数据组织如下:
李明 40:50:60:70:80
刘胜 45:55:65:75:85
读取这个文件上的姓名与数字,输出到另一个txt文件上。提取数字,并求出总和,要求输出姓名与数字的总和。
怎么实现呢?希望能给出代码或指点。用正则表达式又该怎么实现?
测试结果
result.txt 文件中的内容如下
李明 40:50:60:70:80
姓名:李明 总成绩:300
刘胜 45:55:65:75:85
姓名:刘胜 总成绩:625
不明白+QQ 379821283
代码如下:
package com.rabbit.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class TestFile
public static void main(String[] args) throws Exception
//获得文件输入流 假设目标文件名为data.txt
FileInputStream fin = new FileInputStream("data.txt");
InputStreamReader inR = new InputStreamReader(fin);
BufferedReader bfR = new BufferedReader(inR);
//获得文件输出流 假设目标文件名为resutl.txt 追加方式
FileOutputStream fout = new FileOutputStream("resutl.txt",true);
OutputStreamWriter outW = new OutputStreamWriter(fout);
BufferedWriter bfW = new BufferedWriter(outW);
String temp = "";//临时缓存 保存读取到的每一行记录
String[] tempArr = ;//临时缓存 保存用空格拆分该行记录得到的数组
String name="";//临时缓存 保存姓名
String[] scoreTemp = ;//临时缓存 保存分数串拆分后得到的数组
int totalScore = 0;//临时缓存 总成绩
//开始读文件
while((temp=bfR.readLine())!=null)
//正则表达式拆分读取到的每行 拆分成 姓名+分数串
tempArr = temp.split("[ ]+");
//得到姓名
name = tempArr[0];
//正则表达式拆分分数串得到分数数组
scoreTemp = tempArr[1].split(":");
//循环分数数组 得到总成绩
for(int i=0;i<scoreTemp.length;i++)
totalScore += Integer.parseInt(scoreTemp[i]);
//写入结果文件
bfW.write(temp+"\r\n");
bfW.write("姓名:"+name+" 总成绩:"+totalScore+"\r\n");
//关闭流
bfR.close();
bfW.close();
测试正常 参考技术A
java中所有数据的传输都是通过字节流的形式,包括文件或图片。
那么当你要读取一个文件时,首先将文件的绝对路径告诉java,调用对应的api就可以拿到该文件的字节流,下面是一段读取xml文件的例子
SAXReader reader = new SAXReader();Document document = null;
try
InputStream in = this.getClass().getResourceAsStream(xmlPath);
document = reader.read(in);
catch (Exception e)
e.printStackTrace();
return;
在这段代码中的SAXReader和Document是xml的工具类,无视就好了。
重点是InputStream in = this.getClass().getResourceAsStream(xmlPath); 这句
xmlPath就是文件的绝对路径,比如D:/abc/test.xml
InputStream就是该文件的输入流,接下来就可以通过它得到文件里的数据,或者转存到其他地方。
更多信息可以参看我的个人网站,详细介绍了I/O:
http://www.mayee.net/blog/blogPage?b=4b570dfe3d8c4d47b71e65d729a99ced
参考技术B import java.io.BufferedReader;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class readStudentScore
public static void main(String[] args)
File in=new File("d:/1.txt");//成绩保存的文件。
File out=new File("d:/2.txt");//结果保存的文件
try
BufferedReader br=new BufferedReader(new FileReader(in));//构造文件过滤流
BufferedWriter bw=new BufferedWriter(new FileWriter(out));//
String temp=new String();
while((temp=br.readLine())!=null)
String[]str=temp.split(" ");//以空格来划分姓名和成绩这两个字段
String name=str[0];
String[]score=str[1].split(":");//此处匹配的是全角的冒号,视情况自己改。
float scoreAll=0;
for(int i=0;i<score.length;i++)
scoreAll+=Float.valueOf(score[i]);//计算总成绩
String outStr=name+" "+scoreAll;
System.out.println(outStr);
bw.write(outStr);//把结果写入缓冲流
bw.newLine();//换行
bw.flush();//把缓冲流中数据写入文件
bw.close();//关闭流
br.close();
catch(FileNotFoundException e)
e.printStackTrace();
catch (IOException ex)
ex.printStackTrace();
参考技术C 可以使用 Scanner 这个类~ Scanner 类是以个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。 具体看下java api~ 下面给你一小段代码
//将一个File对象作为Scanner的构造器参数,则Scanner读取文件内容
Scanner sc = new Scanner(new File("a.txt"));
System.out.println("a.txt文件内容如下:");
//判断是否还有下一行
while(sc.hasNextLine())
//输出文件中的一行
System.out.println(sc.nextLine());
以上是关于java读取TXT文件 我把10万个数字存在了TXT文件中以空格分隔 我想读出来该怎么办(用java )的主要内容,如果未能解决你的问题,请参考以下文章
使用 Java 中的 Scanner 类读取 .txt 文件