java - BufferedWriter通过命令行不写入文件

标签 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 看到了类似的帖子,但没能理解这个问题:(。 提前致谢。

最佳答案

问题出在这一行:

bw.write(sum);

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

将该行更改为:

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

关于java - BufferedWriter通过命令行不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680269/

相关文章:

java - 开始使用aspectj而不使用Spring AOP

使用File IO和2Darray比较C语言中的字符串错误

c - C中动态输入程序的问题

java - 使用 Java 解码 cryptlib 编码文本(不使用 cryptlib)

java - 关于try/catch block 中变量范围的问题

java - 为什么找不到 "com.lowagie.text.rtf"?

php - 如何从命令行 PHP 写入文件?

c# - 如何使用 System.IO.Directory.GetFiles 递归枚举文件+文件夹

linux - 替换 csv 文件中的一行?

ruby - 如何从 Unix 命令行与 MS Exchange 日历交互?