gpt4 book ai didi

java - 使用 java.nio 写入文件

转载 作者:行者123 更新时间:2023-11-29 09:04:40 25 4
gpt4 key购买 nike

我必须使用 java.nio 通过填充数据来创建任意大小的文件。我正在通读一份文件,但对何时需要翻转、放置或书写感到困惑,并且出现错误。我已经使用 .io 成功地完成了这个程序,但我正在测试 .nio 是否会让它运行得更快。

到目前为止,这是我的代码。 args[0] 是您要制作的文件的大小,args[1] 是要写入的文件的名称

public static void main(String[] args) throws IOException
{
nioOutput fp = new nioOutput();
FileOutputStream fos = new FileOutputStream(args[1]);
FileChannel fc = fos.getChannel();

long sizeOfFile = fp.getFileSize(args[1]);
long desiredSizeOfFile = Long.parseLong(args[0]) * 1073741824; //1 Gigabyte = 1073741824 bytes
int byteLength = 1024;
ByteBuffer b = ByteBuffer.allocate(byteLength);

while(sizeOfFile + byteLength < desiredSizeOfFile)
{
// b.put((byte) byteLength);
b.flip();
fc.write(b);
sizeOfFile += byteLength;
}
int diff = (int) (desiredSizeOfFile - sizeOfFile);
sizeOfFile += diff;

fc.write(b, 0, diff);

fos.close();
System.out.println("Finished at " + sizeOfFile / 1073741824 + " Gigabyte(s)");
}

long getFileSize(String fileName)
{
File file = new File(fileName);
if (!file.exists() || !file.isFile())
{
System.out.println("File does not exist");
return -1;
}
return file.length();
}

最佳答案

如果你想做的只是将一个文件预扩展到给定的长度,你可以用三行来完成并保存所有的 I/O:

RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.setLength(desiredSizeOfFile);
raf.close();

这将以您现在尝试执行的速度运行数倍的速度。

关于java - 使用 java.nio 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15665400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com