IO流字节输入输出流
IO流
java IO流原理
1、I/O是input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等。
2、java程序中,对于数据的输入/输出操作以”流(stream)”的方式进行
3、java.io包下提供了各种”流“类的接口,用以获取不同种类的数据,并通过方法输入或输出数据
4、输入 input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
5、输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中
流的分类
按操作数据单位不同分为:字节流(8 bit)二进制文件,字符流(按字符)文本文件
按数据流的刘翔不同分为:输入流,输出流
按流的角色的不同分为:节点流,处理流/包装流
抽象基类 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer
//以上四个类都是抽象类,在使用的时候要创建他们的子类对象
1)Java的IO流共涉及40多个类,实际上非常规则,都是从如上4个抽象基类派生的。
2)由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。
InputStream 字节输入流
InputStream:字节输入流
InputStream抽象类是所有类字节输入流的超类
InputStream 常用的子类
1、FIleInputStream:文件输入流
2、BufferedInputStream:缓冲字节输入流
3、Object Input Stream:对象字节输入流
InputStream 应用实例
应用实例:使用FIleInputStream 读取hello.txt文件,并将文件内容显示到控制台
//1.创建FileInputStream 对象
FileInputStream fis =new FileInputStream("D:/hello.txt");
//读取文件的方法1,一个一个字节的读取
/*read方法功能:读取单个字节,返回该字节的码值,如果读到文件末尾,返回-1*/
int read;
while((read=fis.read())!=-1){
System.out.print((char)read);
}
/*
2.read(byte[])功能:读取多个字节到byte[],返回读取到的字节个数,如果到文件末尾,返回-1
*/
//byte[] b=new byte[1024];
//int len;
//while((len=fis.read(b))!=-1){
//将读取到的字节0 到len转成String输出
// System.out.println(new String(b,0,len));
//}
//3.关闭流,以释放内存
fis.close();
OutputStream 字节输出流
OutputStream:字节输出流
OutputStream抽象类是所有类字节输出流的超类
OutputStream 常用的子类
1、FIleOutputStream:文件输出流
2、BufferedOutputStream:缓冲字节输出流
3、ObjectOutputStream:对象字节输出流
OutputStream 应用实例
应用实例:使用FIleInputStream 读取hello.txt文件,并将文件内容写入到world.txt文件中
FileInputStream fis = new FileInputStream("D:/hello.txt");
FileOutputStream fis2=new FileOutputStream("D:/world.txt");
/*read方法功能:读取单个字节,返回该字节的码值,如果读到文件末尾,返回-1*/
int read;
while ((read = fis.read()) != -1) {
System.out.print((char) read);
//将读取到的字节,写入到指定的文件下
fis2.write(read);
}
小结:InputStream主要用来读取文件中的内容,而OutputStream用来将内容写入文件,可以通过两个流的结合,而做到文件复制的效果