BufferedWriter通过命令行不写入文件

时间:2013-09-08 04:01:01

标签: java file-io command-line bufferedwriter

所以我试图将我的脚本作为一个编程难题进行测试并测试它我正在使用命令行以这种方式将std输入和输出指向文件:

java -jar dist \ PairwiseAndSum.jar< in.txt> out.txt

以下是代码:

Scanner sc = new Scanner(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

try {
    int n = sc.nextInt();
    short a[] = new short[n];
    int sum = 0;
    for (int i = 0; i < n; i++) {
        a[i] = sc.nextShort();
    }
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            sum += a[i] & a[j];
        }
    }

    bw.write(sum);
    bw.flush();
    bw.close();
} catch (IOException e) {
}

输入文件包含“5 1 2 3 4 5”并且正确加载但out.txt文件中没有输出。 现在如果我把“System.out.println(sum);”结果实际上将写在out.txt中。 我在SO看到了类似的帖子,但没有理解这个问题:(。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

问题在于这一行:

bw.write(sum);

write方法采用int参数,但实际上写出了char。因此,您实际上将sum作为单个Unicode代码点输出。 Unicode代码点15是一个非打印的ASCII控制字符,因此当您查看输出文件时,看起来像它是空的。

将该行更改为:

bw.write(Integer.toString(sum));
bw.newLine();