目录
什么是IO流
Input/Output的缩写,用于处理设备之间的数据的传输。
可以形象的理解为IO流是一根管子,连接程序与数据源之间的桥梁。IO流分为字节输入、输出流和字符输入输出流。
IO流四个步骤
1.获得文件对象/获得数据源对象
2.获得IO流,同时连接数据源
3.调用方法写入内容
4.关闭流对象
用途
一、将asdfg123456写入文件里
public static void main(String[] args) throws IOException {
File file = new File("D:\\cc.txt");
FileOutputStream fis = new FileOutputStream(file,true);//不覆盖文件
fis.write("asdfg123456".getBytes());
fis.close();
System.out.println("写入完成!");
}
将对象写入文件中属于输出管
FileOutputStream fis = new FileOutputStream(file,true)不覆盖文件里的内容,接着往下写;
FileOutputStream fis = new FileOutputStream(file,false)覆盖文件里的内容。
二、读取asdfg123456,输入到控制台
//读取
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream(file);
int i = fileInputStream.read();
while (i!=-1){
System.out.print((char)i);
i=fileInputStream.read();
}
fileInputStream.close();
System.out.println("完成!");
}
读取文件里的内容属于输入管
利用while循环,当结束时,末尾会显示-1,所以当最后一个地址不为-1就输出
三、复制图片
public static void main(String[] args) throws IOException {
File file1 = new File("C:\\Users\\20184\\Desktop\\2.png");
File file2 = new File("D:\\mm.png");
FileInputStream fileInputStream = new FileInputStream(file1);
FileOutputStream fileOutputStream = new FileOutputStream(file2);
int i =fileInputStream.read();//一个字符一个字符去复制
while (i!=-1){
fileOutputStream.write(i);
i = fileInputStream.read();
}
fileOutputStream.close();
fileInputStream.close();
System.out.println("完成!");
}
警告:不能用字符流去操作非文本文件
文本文件 :.txt 、.java 、.c 、.cpp——建议使用字符流操作
非文本文件:.jpg 、 .mp3 、.mp4 、.doc 、 .ppt-——建议使用字节流操作
关闭字符流的时候一定要倒着关闭,后用先关
四、复制文本
public static void main(String[] args) throws IOException {
File file1 = new File("C:\\Users\\20184\\Desktop\\多态笔记.txt");
File file2 = new File("D:\\cc.txt");
FileReader fileReader = new FileReader(file1);
FileWriter fileWriter = new FileWriter(file2);
int i = fileReader.read();
while (i!=-1){
fileWriter.write(i);
i = fileReader.read();
}
fileWriter.close();
fileReader.close();
System.out.println("成功!");
}
与复制图片的区别是,复制文本需要使用字符流,除了文字之外,均使用字节流。
总结
IO流 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer
(这四个就是抽象类)