Java IO流

1.IO 概述
(1)输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。将持久化的文件数据加载到内存中
(2)输出:将程序(内存)数据输出到磁盘、U盘等存储设备中
(3)Java 的IO 流主要包括输入流和输出流两种,每种输入、输出流又可分为字节流和字符流两大类:
①字节流以字节为单位来处理输入、输出操作(音频、图像、视频)
②字符流以字符为单位来处理输入、输出操作(文本文件)
2.File 类
(1)File 类代表与平台无关的文件和目录。
(2)File 能新建、删除、重命名文件和目录,但File 不能访问文件内容本身。
(3)如果需要访问文件内容本身,则需要使用输入/输出流。
(4)File类既可以表示“文件”也可以表示“目录”,他们都通过对应的路径来描述
(5)通过构造函数创建一个File类对象,则该对象就是指定文件的引用,可以通过该对象对文件操作。
例:File f = new File(“D:\temp.txt”);
创建一个File类对象f,可通过f对temp.txt进行操作
案例
public class TestFile{
public static void main(String[] args) {
File f = new File(“c:\temp.txt”);
if(!f.exists()){
try {f.createNewFile();
} catch (IOExceptionex){
ex.printStackTrace();
}
}
System.out.println(“是文件吗:” + f.isFile());
System.out.println(“是目录吗:” + f.isDirectory());
System.out.println(“名称:” + f.getName());
System.out.println("路径: " + f.getPath());
System.out.println("绝对路径: " + f.getAbsolutePath());
System.out.println(“最后修改时间:” +new Date(f.lastModified()));
System.out.println(“文件大小:”+ f.length()+“字节”); System.out.println(“文件可读吗:”+f.canRead());
System.out.println(“文件可写吗:”+f.canWrite());
}
}
3.IO 原理
(1)IO流用来处理设备之间的数据传输。
(2)Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。
(3)java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
在这里插入图片描述
4.IO 流的分类
(1)IO流是用来处理设备与程序之间的数据传输
(2)按流向(站位到程序的角度):
①输入流
②输出流
(3)按处理的单位:
①字节流(8bit)byte (非文本信息视频、音频、图像)
②字符流(16bit)char(文本文件)
(4)按流的角色
①节点流:可以从一个特定的IO 设备读/写数据的流(访问文件相关,也叫文件流,程序直接作用在文件上)
②处理流:对一个已存在的流进行连接和封装,通过封装后的流来实现数据读/写操作(缓冲流)
(5)IO 流体系
在这里插入图片描述5.字节流
(1)8位
(2)抽象类
(3)InputStream和OutputStream
(4)实现从指定的文件中获取字节和将字节写入指定的文件的子类:FileInputStream和FileOutputStream
(5)字节流文件读写步骤:
①创建文件对象:File f = new File(“文件路径”);
②根据文件对象创建输入输出流实现对文件的读写
③读:filein.read(字节数组);//将文件内容读到指定的字节数组
④写:fileout.write(字节数组);//将指定字节数组中的数据写到文件
⑤关闭流:filein.close();fileout.close();
6.字符流
(1)实现从指定的文件中读取字符和将字符写入指定的文件
(2)抽象类:Reader和Writer
(3)子类:FileReader和FileWriter
7.InputStream& Reader
(1)InputStream和Reader 是所有输入流的基类。
(2)InputStream(典型实现:FileInputStream):
①intread()
②intread(byte[] b)
③intread(byte[] b, intoff, intlen)
(3)Reader(典型实现:FileReader):
①intread()intread(char [] c)
②intread(char [] c, intoff, intlen)
(4)程序中打开的文件IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件IO 资源。
8.OutputStream& Writer
(1)OutputStream和Writer 也非常相似:
①void write(byte write/intc)
②void []/char[] buff)
③void write(byte[]/char[] buff, intoff, intlen);
(2)因为字符流直接以字符作为操作单位,所以Writer 可以用字符串来替换字符数组,即以String 对象作为参数
①void write(String str);
②void write(String str, intoff, intlen)
9.RandomAccessFile类
  RandomAccessFile是java Io体系中功能最丰富的文件内容访问类。即可以读取文件内容,也可以向文件中写入内容。但是和其他输入/输入流不同的是,程序可以直接跳到文件的任意位置来读写数据。
  与OutputStearm,Writer等输出流不同的是,RandomAccessFile类允许自由定位文件记录指针,所以RandomAccessFile可以不从文件开始的地方进行输出,所以RandomAccessFile可以向已存在的文件后追加内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值