我创建了一个生成素数的程序(使用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上的文本文件中显示了什么:
尝试(Writer bw = new BufferedWriter(new OutputStreamWriter(fos,“UTF8”))
虽然我仍然在文本文件中得到相同的结果。
更新
我尝试使用默认编码在Microsoft Word上打开Windows 10上的文件,并且它工作正常,显示应该的数字,这让我回到问题,这是Windows上的程序记事本的问题10?