Java中的IO流:就是内存与设备之间的输入和输出操作就成为IO操作,也就是IO流。内存中的数据持久化到设备上--------》输出(Output)。把 硬盘上的数据读取到内存中,这种操作 成为输入-----》读(Input)。
input和output的参照物都是Java程序来参照
Input:读 持久化上的数据------》内存 父类 InputStream
output:写 内存---------》硬盘 父类OutputStream
IO程序书写流程:
1 使用前 导包 IO包中的类(import java.io.*)
2 使用中 进行异常的处理
3 使用后 释放资源(close())
例子如下:
OutputStream字节输出流的用法(写):
package com.aaa.demo; import java.io.FileNotFoundException;
import java.io.FileOutputStream; /*
* FileOutputStream 写入数据文件 学习父类的方法 使用子类的对象
* 子类中的构造方法 作用:绑定输出的目的的
* File封装的文件
* String字符串的文件夹
* */
public class FileOutputStreamDemo {
public static void main(String[] args) throws Exception {
//创建流子类对象 绑定数据目的
FileOutputStream fos=new FileOutputStream("c:\\aaa.txt");
//调用write()方法 写一个字节
fos.write(97);
//2.1写字节数组
byte[] b={65,66,67,68};
fos.write(b);
//2.2写字节数组的一部分
fos.write(b,1,2);
//2.3写字符串 getBytes()字符串转字节
fos.write("hello world".getBytes());
//3.close关闭资源
fos.close();
}
}
InputStream字节输入流的用法(读):
package cn.lijun.demo1; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; // 1创建字节输入流的子类对象
//2 调用方法读取 read
//3 关闭资源 public class FileInputStreamDemo {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("c:\\aaa.txt");
int len =0;
while((len=fis.read())!=-1){
System.out.print((char)len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
字节流和字符流的相同和区别:
相同点:两类都分为输入和输出操作。
不同点:1、字节流可用于任何类型的对象;分为InputStream(读)和OutputStream(写)两部分完成输入和输出;主要用来处理字节或二进制对象,,不能处理Unicode字符。
2、字符流分别操作字符、字符数组或字符串;分为Writer类和Reader类完成;主要用来处理字符或者字符串,可以处理Unicode字符。