• I/O 即输入Input/ 输出Output的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程。
• java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一个“类”,都放在java.io包里面。
IO流的分类
1、按照流的方向(输出输入都是站在程序所在内存的角度划分的)
• 输入流:只能从中读取数据【主要由InputStream和Reader作为基类】
• 输出流:只能向其写入数据【主要由outputStream和Writer作为基类】
2、按照流的操作颗粒度划分
• 字节流:以字节为单元,可操作任何数据【主要由InputStream和outPutStream作为基类】
• 字符流:以字符为单元,只能操作纯字符数据,比较方便【主要由Reader和Writer作为基类】
3、按照流的角色划分
• 节点流:可以从/向一个特定的IO设备(如磁盘,网络)读/写数据的流,也叫【低级流,主要由】
• 处理流:用于对一个已存在的流进行连接和封装,通过封装后的流来实现数据的读/写功能,也叫【高级流】
来2个demo~
读取File内容到另个File
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class FileIO {
public static void main(String[] args) throws IOException {
File file = new File("R:\\haha2.txt");//读取文件haha2.txt
File file2 = new File("R:\\haha.txt");//读取文件haha.txt
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file2)));//用BufferedReader读取文件流
String line;
FileOutputStream fs = null;
while ((line = br.readLine()) != null) {//一次 读取 一行内容
if (file.exists()) {
fs = new FileOutputStream(file,true);//=====加上 true=====
fs.write(line.getBytes());
} else {
file.createNewFile();//创建 文件 txt
}
}
fs.flush();
fs.close();
br.close();
}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class FileIO2 {
public static void main(String[] args) throws IOException {
File file = new File("R:\\haha.txt");
File file2 = new File("R:\\haha2.txt");
StringBuilder sb = new StringBuilder();//声明 StringBuilder 用来存放读取的内容
InputStream is = null;
FileOutputStream fo = null;
is = new FileInputStream(file);//把文件读到输入流
int len = 0;
byte[] buf = new byte[1024];
while((len=is.read(buf))>0){
fo = new FileOutputStream(file2);
sb.append(new String(buf,0,len));
fo.write(sb.toString().getBytes());//写到文件
}
is.close();
fo.close();
}
}