Java I/O流
发布日期:2021-05-14 18:09:40 浏览次数:15 分类:精选文章

本文共 1786 字,大约阅读时间需要 5 分钟。

File类用于表示文件或目录的信息,主要用于获取文件的路径、大小等属性,但不支持文件内容的访问。为了操作文件内容,需要结合File类和其他流类。


File类的使用

File类可以通过构造函数获取文件或目录的路径。例如:

File file = new File("test.txt");

可以通过File类获取文件的路径、名称、长度、父目录以及оку符,例如:

System.out.println("文件路径:" + file.getPath());
System.out.println("文件名:" + file.getName());
System.out.println("文件长度:" + file.length());

File类还可以用来检查文件的存在性和权限:

if (file.exists()) {
System.out.println("文件存在");
} else {
System.out.println("文件不存在");
}

RandomAccessFile的使用

RandomAccessFile允许对文件进行随机读取和写入操作,使得可以定位到文件中的特定字节位置进行操作。常见用途包括RAM盘仿真、数据随机访问等。

RandomAccessFile randomFile = new RandomAccessFile("test.dat", "r");
try {
int length = (int) randomFile.length();
char c = (char) randomFile.readLong();
System.out.println("随机读取的字符:" + c);
} catch (IOException e) {
e.printStackTrace();
}

字节流的使用

字节流用于读取和写入二进制数据,如图片、音频、视频等。InputStream和OutputStream是字节流的核心接口。常见字节流示例包括FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream等。

FileInputStream inputStream = new FileInputStream("test.jpg");
byte[] byteBuffer = new byte[100];
int read Byte = inputStream.read(byteBuffer);
System.out.println("读取的字节数:" + readByte);

字符流的使用

字符流用于处理文本文件,自动处理字符编码,避免了手动配置编码方式。常见字符流包括FileReader、StreamWriter、InputStreamReader、OutputStreamWriter等。

FileReader reader = new FileReader("test.txt");

对象的序列化和反序列化

序列化是将对象的状态保存为字节流,便于随后反序列化恢复对象。主要使用ObjectOutputStream和ObjectInputStream。自定义序列化需要指定writeObject和readObject方法。

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("test.obj"));
oos.writeObject(userObject);
oos.flush();

反序列化时:

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.obj"));
User user = (User) ois.readObject();

通过理解和实践File类、RandomAccessFile以及字节流和字符流的使用,可以更好地管理文件操作和数据传输,提升编码能力。序列化和反序列化对于保存和恢复对象状态具有重要作用。未来可以结合实际项目,深入练习这些概念,以及时掌握Java中的IO操作技巧。

上一篇:面试题七:View的绘制
下一篇:AsyncTask相关知识

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年04月21日 22时40分13秒