我正在处理一个文本文件(inputFile)来读取几列数据并将这些数据打印到新文本文件中的行(列成为行)。这些数据列包含21个唯一双精度字符串。
检查进程,例如:System.out.println(H2OIN);表明所有数据都被正确读入五个数组,但格式化程序只将字符串中的最后一个双字符打印到新文本文件,即:
“450.6
1399.9
121.0
515.8
915.0"
如何将字符串中的所有21个双打打印到新文本文件?
这是我的代码:
public void findFile () throws Exception{
try {
FileInputStream file = new FileInputStream(inputFile);
BufferedReader in = new BufferedReader(new InputStreamReader(file));
while((line = in.readLine()) != null) {
if(line.startsWith(" 0.000")) break;
}
while((line = in.readLine()) != null) {
stream = line.split(parse);
start = line.substring(6,9);
if(start.equals("000")){
H2OIN = Double.parseDouble(stream[7]);
CO2IN = Double.parseDouble(stream[8]);
OILOUT = Double.parseDouble(stream[9]);
H2OOUT = Double.parseDouble(stream[10]);
CO2OUT = Double.parseDouble(stream[12]);
System.out.println(H2OIN);
f = new Formatter("M:\\TESTPACK\\AL6000803OUT.TXT");
f.format("SELECT * FROM %s%n", H2OIN);
f.format("%s%n", CO2IN);
f.format("%s%n", OILOUT);
f.format("%s%n", H2OOUT);
f.format("%s%n", CO2OUT);
f.close();
}
}
}catch (FileNotFoundException e) {
}catch (IOException e) {
}
}
}
编辑 - 格式化是我正在使用的噩梦,我还无法发布图像。所以我会描述它
年[]标题2 []标题3 [] ...标题8等...
年[]标题2 []标题3 [] ...... H2OIN等......
0.000 [] 0.000 [] 0.000 [] 0.000
1.000 [] 1.000 [] 15.106 [] 18.89
2.000 [] 4.000 [] 21.911 [] 45.12
...
21.000 [] 4.000 [] 21.911 [] 450.6
答案 0 :(得分:0)
如果我理解正确,你在文件中只有5个值。我认为这个问题在这里:f = new Formatter("M:\\TESTPACK\\AL6000803OUT.TXT");
根据{{3}}
file - 要用作此格式化程序的目标的文件。 如果该文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。
据我了解你只需要这样做:
public void findFile () throws Exception{
try {
FileInputStream file = new FileInputStream(inputFile);
BufferedReader in = new BufferedReader(new InputStreamReader(file));
f = new Formatter("M:\\TESTPACK\\AL6000803OUT.TXT");
while((line = in.readLine()) != null) {
if(line.startsWith(" 0.000")) break;
}
while((line = in.readLine()) != null) {
stream = line.split(parse);
start = line.substring(6,9);
if(start.equals("000")){
H2OIN = Double.parseDouble(stream[7]);
CO2IN = Double.parseDouble(stream[8]);
OILOUT = Double.parseDouble(stream[9]);
H2OOUT = Double.parseDouble(stream[10]);
CO2OUT = Double.parseDouble(stream[12]);
System.out.println(H2OIN);
f.format("SELECT * FROM %s%n", H2OIN);
f.format("%s%n", CO2IN);
f.format("%s%n", OILOUT);
f.format("%s%n", H2OOUT);
f.format("%s%n", CO2OUT);
}
}
f.close();
}catch (FileNotFoundException e) {
}catch (IOException e) {
}
}
至于我,如果你将使用finally子句来关闭所有资源,那就更好了。