如题,java写文件还是挺简单的,但是它写文件的时候,具体的细节是什么呢?
是这样的,我写了个java程序,往txt文件中写入1000000个int数据
如果我没想错的话,不是应该1000000 * 4B才对吗?也就是约等于4MB?
为什么生成的是7.52MB?
谁知道具体细节的能说一下吗?
如果想生成4MB的文件,又是怎么操作呢?Java文件读写
是这样的,我写了个java程序,往txt文件中写入1000000个int数据
如果我没想错的话,不是应该1000000 * 4B才对吗?也就是约等于4MB?
为什么生成的是7.52MB?
谁知道具体细节的能说一下吗?
如果想生成4MB的文件,又是怎么操作呢?Java文件读写
对的,早上还想到自己记错了,呵呵~
FileOutputStream out = new FileOutputStream("D:/test.dat");
PrintStream p = new PrintStream(out);
for(int i = 0;i < 1000000;i++){
p.println(i);
}
p.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}
p.println(i);
}println会额外的写入换行符\r\n
另外尝试把循环条件改成for(int i = 10000000;i < 11000000;i++)2
这样的话,文件就变成了7.62M了,所以基本确定了是编码问题导致这样的
我已经明白了啊,不过现在寻找一下如何写二进制的方式,觉得使用二进制IO的话就不会出现这种问题了
try {
DataOutputStream out = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(fileName,true)));
for (int i = 0 * 1024 * 1024; i < 1 * 1024 * 1024; i++) {
out.writeInt(i);
}
out.close();
DataInputStream input = new DataInputStream(new BufferedInputStream(new
FileInputStream(fileName)));
int i = 0;
while(i < 10 * 1024){
System.out.println(input.readInt());
i++;
}
input.close();
} catch (Exception e) {
e.printStackTrace();
}