Java网络编程复习IO流
Java 网络编程
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。
1. 流的分类方式
(1)流向: 输入,输出流
(2)数据单位: 字节流,字符流
(3)流的角色: 节点流,处理流
2, IO流的抽象基类,文件流,缓冲流
InputStream, OutPutStream, Reader, Writer
FileInputStream, FileXXX...
BufferedInputStream, ...
3. 字节流和字符流的区别
字节流处理非文本文件,字符流处理文本文件
不走内存,复制文件,使用字节流,有中文的时候会出现乱码
字节流:read(byte [] buffer) / read()
字符流:read(char [] cbuf) / read()
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis= new BufferedInputStream(new FileInputStream(new File("C:\\Users\\Zir\\Pictures\\Camera Roll\\1.jpg")));
bos = new BufferedOutputStream(new FileOutputStream(new File("D:\\soft\\1.jpg")));
byte[] buffer = new byte[1024];
Integer len;
// 判断流中是否有数据
while ((len=bis.read(buffer))!= -1){
// 缓冲输出流写出,len做读取长度,读进去多少,从0开始写出去
bos.write(buffer,0,len);
}
// 先关输出流,再关输入流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
// 先开后关,后开先关
if (bis != null ){
bos.close();
}
if (bis != null ){
bis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
4. 转换流类型,作用。
(1)InputStreamReader: 将输入的字节流转换为输入的字符流,解码
(2)OutputStreamWriter: 将输出的字符流转换为输出的字节流,编码
// 解码,将文件以字节转字符的方式读入内存,文件以什么编码编的就要以什么解码 InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("")), "UTF-8"); // 编码,将文件以字符转字节方式写出,自己定义编码方式 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(new File("")),"GBK");