IO流:对输入输出设备进行读写操作的一组API(文件、网络)
IO流API的包的路径:Java.io
File类:对文件除读写之外的操作,对文件夹的所有操作
IO流的分类
按流向划分
--输入流:读
--输出流:写
按照功能划分
节点流:(介质流、基本流):最底层的流,通常直接访问输入输出设备
---文件输入输出流
处理流(过滤流、高级流):基于其他流基础上扩展其功能或增加其性能
---缓冲输入输出流,提高读写的效率
按照传输的数据类型划分
字节流:传输字节数据
字符流:可直接传输字符数据
IO流的四大基类(抽象类):
InputStream:字节输入流
OutputStream:字节输出流
Reader:字符输入流
Writer:字符输出流
FileInputStream:文件输入流 读
FileOutputStream:文件输出流 写
-PrintWriter格式化输出流,使用println方法
-BuffereReader 缓冲字符输入流 readline方法
InputStreamReader 字节—字符转换流
因BufferedReader转入参数需要字符流,故用之
public static void main(String[] args) {
try {
FileOutputStream fo=new FileOutputStream("333.txt");
PrintWriter w=new PrintWriter(fo);
String s="heeelo";
w.println(s);
w.flush();
FileInputStream fi=new FileInputStream("333.txt");
BufferedReader r=new BufferedReader(new InputStreamReader(fi));
//只能传字符流,所以要InputStreamReader过渡一下
while(true){
String ss=r.readLine();
if(ss==null){
break;
}
System.out.println(ss);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出结果是:heeelo
BufferedInputStream:缓冲字节输入流
BufferedOutputStream:缓冲字节输出流
以上两个流都是处理流,作用是提高流的读、写效率,对所有流的拷贝操作都使用这两个流。
public static void main(String[] args) {
try {
FileInputStream fi=new FileInputStream("C:\\Users\\Administrator\\Desktop\\7c2e81f26d7cbe1d4c1c1cdaf1557952.jpg");
FileOutputStream fo=new FileOutputStream("222.jpg");
BufferedInputStream bi=new BufferedInputStream(fi);
BufferedOutputStream bo=new BufferedOutputStream(fo);
byte data[]=new byte[1024];
while(true){
int ret=bi.read(data);
if(ret<0){
break;
}
bo.write(data,0,ret);
bo.flush();
}
bi.close();
bo.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这个程序作用是进行图片的拷贝。