Java使用格式化程序打印.xxt文件的双精度字符串

时间:2014-08-19 20:11:27

标签: java string double formatter

我正在处理一个文本文件(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

1 个答案:

答案 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子句来关闭所有资源,那就更好了。