为了方便记忆,特将IO中涉及的类进行整理如下:

1、File类

  提供了目录操作,查看文件属性等。

2、java IO类层次

面向字节流的类为InputStream、OutputStream;面向字符流的类为Reader、Writer

可以使用 InputStreamReader 将 InputStream-->Reader

可以使用OutputStreamWriter 将 OutputStream-->Writer

InputStream    --->Reader

|---ByteArrayInputStream  --->CharArrayReader

|---StringBufferInputStream(discard)  --->StringReader

|---FileInputStream  --->FileReader

|---PipedInputStream  --->PipedReader

|---FilterInputStream

|---DataInputStream  

|---BufferedInputStream  --->BufferedReader(has readLine function)

OutputStream  --->Writer

|---ByteArrayOutputStream  --->CharArrayWriter

|---FileOutputStream  --->FileWriter

|---PipedOutputStream  --->PipedWriter

|---FilterOutputStream

|---DataOutputStream

|---PrintStream  --->PrintWriter

|---BufferedOutputStream  --->BufferedWriter

2、一些常用的组合

  BufferedReader s = new BufferedReader(new FileReader(fileName));   //字符缓冲方式读取

  DataInputStream di = new DataInputStream(new BufferedInputStream(new FileInputStream(filename)));   //从文件缓冲读取数据类型

  DataOutputStream outputStream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(filename)));   //将数据类型写入到文件之中,然后可以通过DataInputStream来读取

  PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(filename)));   //将文件通过PrintWriter方式格式化写入

    out.println 函数就可以格式化写文件内容了。

3、RandomAccessFile类

  支持搜寻方法的文件读写类,提供给了seek函数

4、标准IO

System.err, System.out 都已经被包装成了 PrintStream 因此可以直接使用。

System.in 还是属于 InputStream 类型,因此在使用前需要包装下。

  1)按行读取:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  ///使用了InputStreamReader将System.in表示的InputStream类型转换成Reader类型。

  2)将System.out转换成PrintWriter:PrintWriter pw = new PrintWriter(System.out,true);

5、重定向IO

  setIn(InputStream)

  setOut(PrintStream)

  setErr(PrintStream) 

最新文章

  1. 一些Matlab函数的使用
  2. OC中的那些String
  3. Intellij Idea中运行tomcat 报內存溢出 解决方案 火龙战士 火龙战士
  4. byte与char的区别
  5. Smart法则
  6. android 自定义ratingbar 图片显示不全的解决方案
  7. Android中log4j的运用
  8. Ubuntu 12.04 使用Eclipse搭建C/C++编译环境
  9. LinearLayout具体解释二:LinearLayout的创建过程以及状态全程解析
  10. 数据包接收系列 — NAPI的原理和实现
  11. eclipse maven install 报错 jdk rather than jre?
  12. Python基础之面向对象进阶一
  13. [Chrome插件] SelectJd(京东自营筛选器) v1.0.0 发布
  14. 基于 redis 的分布式锁实现 Distributed locks with Redis debug 排查错误
  15. FSMC_LCD
  16. vue项目引入FastClick组件解决IOS系统下h5页面中的按钮点击延迟,连续点击无反应的问题
  17. 【Linux 线程】同一个进程中的线程共享哪些资源
  18. RecyclerView怎么能没有ItemClickListener?加一个!
  19. liunx网络基本命令
  20. BZOJ 4802 欧拉函数

热门文章

  1. Spring Boot 集成servlet,发布为可直接运行的war包,方便后续打包为docker镜像。
  2. Win2003+apache+PHP+SqlServer2008 配置
  3. Golang之一个简单的聊天机器人
  4. WSTMart开发文档
  5. c11时间库一个小例子
  6. SLAM应用的一些思考
  7. centos搭建本地yum源,
  8. Oracle学习笔记(七)
  9. 20169205实验三 敏捷开发与XP实践
  10. 网络排错与网络命令的理解ping-traceroute-host(nslookup)-tcpdump获取对方的mac