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");

 

posted @ 2022-07-13 17:51  潘小伟  阅读(29)  评论(0编辑  收藏  举报