在Windows 10上写入.txt文件时出现问题

时间:2015-08-19 07:46:25

标签: java text-files windows-10 fileoutputstream bufferedwriter

我创建了一个生成素数的程序(使用Sieve of Eratosthenes算法),并让用户有机会选择结果的输出位置;控制台,文本文件或两者。

虽然写入文本文件时,我遇到了一些问题。在Mac OS X,它工作正常,虽然在Windows 10我在向文件写入超过几百个数字时遇到了麻烦。我打开结果的程序是记事本,所以我在想,这是一个记事本问题吗?我已经提供了用于写入文本文件的代码以及当我尝试将25000下面的所有素数写入其中时文本文件中显示的示例。

我的代码:

private static void outputPrimesToFile(boolean [] primeNumbers, int maxPrime) {
    try{
        String fileName = System.getProperty("user.dir") + "/Primes below " + maxPrime + ".txt";
        File file = new File(fileName);
        if(file.exists()) {
            file.delete();
        }
        System.out.println("\nCreating file...");
        file.createNewFile();
        System.out.println("Writing results to file...");
        FileOutputStream fos = new FileOutputStream(file, true);
        String encoding = System.getProperty("file.encoding");
        try (Writer bw = new BufferedWriter(new OutputStreamWriter(fos, encoding))) {
            for (int i = 2; i < primeNumbers.length; i++) {
                if(primeNumbers[i]) {
                    bw.append(i + " ");
                }
            }
        }
        System.out.println("Success. Exiting...");
    }catch(IOException e) {
        System.out.println(e.getMessage());
    }
}

Windows 10上的文本文件中显示了什么:

enter image description here

  • 我也尝试过使用以下内容:
  

尝试(Writer bw = new BufferedWriter(new OutputStreamWriter(fos,“UTF8”))

虽然我仍然在文本文件中得到相同的结果。

  

更新

     

我尝试使用默认编码在Microsoft Word上打开Windows 10上的文件,并且它工作正常,显示应该的数字,这让我回到问题,这是Windows上的程序记事本的问题10?

0 个答案:

没有答案