
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();
}
}
