2022-09-23 11:34:57
IO流是Java中用于操作文件的核心机制,通过java.io.*包提供的类和方法,可实现文件的读写、路径管理等功能。以下是关键知识点总结:
二进制文件:存储任意二进制数据(如图片、视频),需用专用工具(察猜前如ULTRA Edit)编辑。
文本文件:存储ASCII码字符,可用文本编辑器(如记事本)打开。
File类提供对文件和目录的整体操作,不直接读写内容。常用方法如下:
File f1 = new File("E:testHello.text");getAbsolutePath():返回文件的绝对路径(如E:testHello.text)。
getPath():返回定义时的路径(如E:testHello.text)。
getParent():获取父目录路径(如E:test)。
isFile():判断是否为文件(返回boolean)。
isDirectory():判断是否为目录。
exists():判断文件或目录是否存在。
getName():获取文件名(如Hello.text)。
length():返回文件大小(字节数)。
流是Java中连续传输数据的抽象,类似水流或电流。其核心分类如下:

输入流(Input Stream):从数据源读取数据(如FileInputStream)。
输出流(Output Stream):向目标写入数据(如FileOutputStream)。
字节流:以字节为单位传输(如InputStream、OutputStream)。
字符流:以字符为单位传输(如Reader、Writer),适合文本处理。
节点流:直接连接数据源(如FileReader、FileInputStream)。
处理流:包装节点流以增强功能(如BufferedReader、BufferedInputStream)。
InputStreamReader:将字节流转换为字符流。
OutputStreamWriter:将字符流转换为字节流。
// 字节流转字符流InputStreamReader isr = new InputStreamReader(new FileInputStream("hello.txt"));流占用系统资源(如文件描述符、网络连接),垃圾回收器无法自动释兆档放,需显式调用close()。
System.exit()会强制终止JVM,关闭所有资源,但应优先使用close()。
Java 7+推荐使用try-with-resources自动关闭流:
try (FileInputStream fis = new FileInputStream("hello.txt")) { // 自动调用close()} catch (IOException e) { e.printStackTrace();}文本数据优先用字符流(如FileReader)。
二进制数据用字节流(如FileInputStream)。
需要缓冲或转换时,叠加处理流(如BufferedReader)。
掌握以上内容后,可进一步学习NIO(New IO)或Java 7引入的Files工具类,以实现更高效的IO操作。