我正在尝试将一个非常大的BigInteger打印到一个.txt文件中,但是当数字达到一定大小时,它不会打印任何东西。 代码:
BigInteger bi = new BigInteger("16777216");
int exponent = 1000000;
bi = bi.pow(exponent);
String txtToPrint = bi.toString();
sendToFile(txtToPrint, "output.txt");
private static void sendToFile(String txtToPrint, String fileName) {
try {
FileWriter fileWriter = new FileWriter(fileName);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(txtToPrint);
bufferedWriter.close();
}
catch(IOException e) {
System.out.println("Error writing to file '" + fileName + "'");
}
}
每当指数大于566时,输出文件为空,而不是包含数字。目标是具有1000000甚至更大的指数。
我认为BigInteger没有大小限制,那么我的问题是:我超出了什么限制,是否有解决此问题的方法?
编辑:尝试刷新和关闭filewriter时,我得到了这个异常:
java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source)
at sun.nio.cs.StreamEncoder.flush(Unknown Source)
at java.io.OutputStreamWriter.flush(Unknown Source)
at PrintInt.main(PrintInt.java:4
编辑:该问题仅在Eclipse中运行程序时出现,我尝试将其导出为外部jar文件,一切都正常。我使用的是Eclipse Mars.1 Release(4.5.1)和Java jre1.8.0_131以及Cp1252编码。
Integer.MAX_VALUE
(减去某个值)位数字。但是使用那个指数,你应该没问题... - AxelHBufferWriter
... - AxelH