概述
import java.io.IOException;
import java.io.RandomAccessFile;
public class MyFileUtilsTest {
public static void main(String[] args) throws IOException{
// 需要读取的文件
RandomAccessFile file = new RandomAccessFile("D:\1.png","rw");
// 需要写入的文件
RandomAccessFile currentFile = new RandomAccessFile("D:\2.png", "rw");
int hasRead = 0;
byte[] buffer = new byte[1024];
while (( hasRead = file.read(buffer)) != -1){
currentFile.write(buffer,0,hasRead);
}
file.close();
currentFile.close();
}
}
java在读取文件的时候,总是需要开辟一块内存空间,这块内存空间可大可小即
byte[] buffer = new byte[1024];
hasRead = file.read(buffer)
将文件读取到字节数组中,并返回读取的大小,读取不到就返回-1;再次调用时将会读取下一块文件内容。
如图所示:将1.png
的字节数据读取到字节数组中,再将字节数组中的数据写入2.png
中。循环往复就可以将字节数据完整的读取出来并写入新的文件中。
接下来看一下Python中如何实现上述功能。
with open("D:/1.mp4", mode='rb') as f:
with open("D:/2.png", mode='wb') as f2:
f2.write(f.read())
python要实现起来代码就比Java简洁多。但原理也大体相同。
mode中的'b'
代表着读取或者写入的是字节数据。
f.read()
就可以将整个文件的字节获取到。不用像Java一样只读取部分。
为什么Java需要只读取部分?
- Java中的数组其长度是确定的。数组一旦被创建,它的大小是不可以改变的。
- 内存空间大小是有限的如果一个太大的文件一次性读取到内存中可能导致内存溢出。
最后
以上就是乐观身影为你收集整理的【Java】使用RandomAccessFile读写字节文件的全部内容,希望文章能够帮你解决【Java】使用RandomAccessFile读写字节文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复