字节流://图片数据,复制文件
输入字节流:
---------| InputStream 所有输入字节流的基类 抽象类
------------| FileInputStream 读取文件的输入字节流
------------| BufferedInputStream 缓冲输入字节流,提高读取文件数据的效率,byte[] buffer=new byte[1024*8];
输出字节流:
---------| OutputStream 所有输出字节流的基类。 抽象类
------------| FileOutputStream 向文件输出数据 的输出字节流
------------| BufferedOutputStream 缓冲输出字节流
字符流://读写的都是字符数据 字符流 = 字节流 + 编码(解码)
输入字符流
--------| Reader 所有输入字符流的基类。 抽象类
-----------| FileReader 读取文件字符的输入字符流
-----------| BufferedReader 缓冲输入字符流,提高写文件字符的效率,readLine()
输出字符流
-------| Writer 所有输出字符流的基类 抽象类
------------| FileWriter 向文件输出字符数据的输出字符流
------------| BufferedWriter 缓冲输出字符流,提高写文件字符的效率,newLine()
转换流:
输入字节流的转换流
InputSrteamReader //字节字符
输出字节流的转换流
OutputStreamWriter
转换流的作用:
1. 可以把对应的字节流转换成字符流使用。
2. 可以指定码表进行读写文件的数据。
public static void writeFile() throws Exception{
FileOutputStream out=new FileOutputStream("C:/Users/Mr.L/EclipseWorkSpace/dayTest/src/com/mrl/io/a.txt");
OutputStreamWriter outPutStreamWriter=new OutputStreamWriter(out,"UTF-8");
outPutStreamWriter.write("你好吗?");//utf-8下,一个中文字符占三个字节
outPutStreamWriter.close();
}
public static void readFile() throws Exception{
/*FileInputStream in=new FileInputStream("C:/Users/Mr.L/EclipseWorkSpace/dayTest/src/com/mrl/io/a.txt");
InputStreamReader inputStreamReader=new InputStreamReader(in,"UTF-8");
int content=0;
while((content=inputStreamReader.read())!= -1){
System.out.print((char)content);
}
inputStreamReader.close();
*/
FileReader fileReader=new FileReader("C:/Users/Mr.L/EclipseWorkSpace/dayTest/src/com/mrl/io/demo.java");
int content=0;
while((content=fileReader.read())!= -1){//jdk1.8 未出现中文乱码情况
System.out.print((char)content);
}
fileReader.close();
}
public static void testInput() throws Exception{
InputStream in=System.in;
InputStreamReader inputStreamReader=new InputStreamReader(in);
BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
System.out.println(bufferedReader.readLine());
}
public static void testOutput() throws Exception{
Socket socket = new Socket(InetAddress.getLocalHost(),9090);
OutputStream outPutStream=socket.getOutputStream();
OutputStreamWriter outputStreamWriter=new OutputStreamWriter(outPutStream);
outputStreamWriter.write("你好");
socket.close();
}