IO使用了装饰者模式(扩展对象的功能)
()java io?
答:所有流类型继承以下四种抽象流类型。
| 字节流 | 字符流 |
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
字节流和字符流区别,什么时候使用?
答:字节流以字节为基本单位
字符流以字符(两个字节)为基本单位
字符流使用了缓冲,字节流没有使用缓冲。
关系到汉字使用字符流。
ByteArrayInputStream:从byte数组中读取数据
BufferedInputStream:装饰InputStream,分批读取数据到缓冲区byte[],当缓冲区
数据读完之后再次填充缓冲区。
DataInputStream:装饰输入流,读取java基本数据类型(一次读取多个字节)
ObjectInputStream/ObjectOutputStream
ByteArrayOutputStream:向byte数组写入数据
BufferedOutputStream:装饰OutputStream,分批填充数据到缓冲区byte[],当缓冲区写满之后先刷新再填充。
DataOutputStream:装饰输出流,写入java基本数据类型(一次写入多个字节)
上传文件:浏览器将文件以流的形式提交到服务器端,可以直接获取输入流解析但比较麻烦,可以借助apache的开源工具common-fileupload解析