JAVA读取txt文本内容存入新的txt文本;

从txt 问题读取数据,txt文本的内容是有规律的,如:12 -156 35 -26 369 598 12 55;我想提取每间隔一个数据存入到新的txt文本,保留数据之间的空格格式。用java如何实现。新手。
原来的txt内容是12 -156 35 -26 369 598 12 55
存到新的txt文本的内容为:12 35 369 12


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader(new File("D:\\123.txt"));//原始文件
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter(new File("D:\\456.txt"));//新的文件
String str = null;
while ((str = br.readLine()) != null) {//读取一行
str = str.replaceAll("-", " ");//这里写你转换的算法
fw.write(str + "\n");//把转换后的字符串输出到新的文件
}
br.close();
fr.close();
fw.flush();
fw.close();
}
}

追问

我是取数间隔数据。

追答

那就改一下这个算法(用的是正则表达式,不懂可以略过)

(我问一个问题,就是这个获取隔一个数据是相对于那一行还是整个文本文件)

把这里改成

String str = null;
Pattern p = Pattern.compile("(\\d*)[^\\d]*(\\d*)[^\\d]*");//加了这句
String res =null;//加了这句
while ((str = br.readLine()) != null) {
res = "";//加了这句
Matcher m = p.matcher(str);//加了这句
while (m.find()) {//加了这句
res += m.group(1) + " ";//加了这句
}//加了这句
fw.write(res + "\n");
}


追问

整个文本文件。

追答import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader(new File("D:\\123.txt"));
FileWriter fw = new FileWriter(new File("D:\\456.txt"));
StringBuffer sb = new StringBuffer();
char[] buff = new char[1024];
int b = 0;
while ((b = fr.read(buff)) != -1) {
sb.append(new String(buff, 0, b));
}
fr.close();
Pattern p = Pattern.compile("(-?\\d+\\.?\\d*)\\s*(-?\\d+\\.?\\d*)\\s*");
String str = sb.toString();
Matcher m = p.matcher(str);
sb = new StringBuffer();
while (m.find()) {
sb.append(m.group(1)).append(" ");
}
fw.write(sb.toString());
fw.flush();
fw.close();
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-24
这里涉及到读写文件,为读、写两个文件分别生成输入流 和 输出流
InputStream is = new FileInputStream(f);
OutputStream os = new FileOutputStream(f);
首先用输入流获得 读文件的内容,你可以用Scanner去解析这个输入流,或者用
BufferedReader br = new BufferedReader(new FileReader(filename));
去读取文件内容,然后split到一个数组中。
然后 你再拼接一段 要写的字符串 这个很简单吧 你只要遍历数组,把自己想要的数字用 int[i] + " " 这样拼接起来就行了
然后再用输出流写入文件就行了
第2个回答  2017-01-24
这里涉及到读写文件,为读、写两个文件分别生成输入流 和 输出流
InputStream is = new FileInputStream(f);
OutputStream os = new FileOutputStream(f);
首先用输入流获得 读文件的内容,你可以用Scanner去解析这个输入流,或者用
BufferedReader br = new BufferedReader(new FileReader(filename));
去读取文件内容,然后split到一个数组中。
然后 你再拼接一段 要写的字符串 这个很简单吧 你只要遍历数组,把自己想要的数字用 int[i] + " " 这样拼接起来就行了
然后再用输出流写入文件就行了
相似回答
大家正在搜