IO:指的是设备之间进行数据传入的流
按照流向分类:
输入流
输出流
按照数据类型分类:
字节流
A:字节输入流 InputStream
FileInputStream:
FileInputStream fis = new FileInputStream("读取数据的文件名");
字节缓冲输入流:BufferedInputStream
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("读取数据的文件名"));
//注意:这里的文件必须提前存在
字节输入流读取数据两种方式:
1、一次读取一个字节
int b = 0;
while((b=bis.read())!=-1){
System.out.print((char)b);
}
bis.close();
2、一次读取一个字节数组
byte[] bytes = new byte[1024];
int length = 0;
while((length = bis.read(bytes))!=-1){
System.out.print(new String(bytes,0,length));
}
bis.close();
B: 字节输出流 OutputStream
FileOutputStream:
FileOutputStream fos = new FileOutputStream("写文件的名字");
字节缓冲输出流:BufferedOutputStream
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(写文件的名字));
//注意:这里文件,可以不存在,之后会自动创建
写数据的方式:
1、一次写一个字节
2、一次写一个字节数组
3、一次写一个字节数组的一部分
字符流(转换流) = 字节流 + 编码表
A: 字符输入流 Reader
InputStreamReader:
InputStreamReader isr = new InputStreamReader(new FileInputStream("读取数据的文件名"));
简化写法:FileReader
FileReader fr = new FileReader("读取数据的文件名");
普通字符输入流读取数据两种方式:
1、一次读取一个字符
int ch = 0;
while((ch = fr.read())!=-1){
System.out.print((char) ch);
}
fr.close();
2、一次读取一个字符数组
char[] chars = new char[1024];
int length = 0;
while((length = fr.read(chars))!=-1){
System.out.print(new String(chars,0,length));
}
fr.close();
字符缓冲输入流:BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("读取数据的文件名")));
BufferedReader br = new BufferedReader(new FileReader("读取数据的文件名"));
字符流读取数据的第三种方式:一次读取一行 readLine()
String s = null;
while((s = br.readLine())!=null){
System.out.print(s);
}
br.close();
B: 字符输出流 Writer
OutputStreamWriter:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("写文件的名字"));
简化写法:FileWriter
FileWriter fw = new FileWriter("写文件的名字");
写数据的方式:
一次写一个字符
一次写一个字符数组
一次写一个字符数组的一部分
一次写一个字符串
高效流,字符缓冲输出流:BufferedWriter
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("写文件的名字")));
BufferedWriter bw = new BufferedWriter(new FileWriter("写文件的名字"));
字符流特殊的写数据方法:
newLine() 写一个换行符,根据系统不同,这里换行符也是不一样的。