美文网首页
JAVA IO(一)体系

JAVA IO(一)体系

作者: Minstrel_a7ca | 来源:发表于2018-07-15 16:28 被阅读0次

分类:

基于传输的格式:

1.字节流: InputStream OutputStream
2.字符流:Writer Reader

基于传输的方式

1.File
2.Socket

I/O解决的问题:

人与机器,机器与机器的交互。

影响I/O性能的关键

1.数据传输的格式
2.数据传输的方式

基于字节流

输入或输出流需要实现InputStreamOutputStream
关键操作 read() write()
类图

InputStream.png
OutputStream.png

这里只想说明两点,一个是操作数据的方式是可以组合使用的,如这样组合使用
OutputStream out = new BufferedOutputStream(new ObjectOutputStream(new FileOutputStream("fileName"));
还有一点是流最终写到什么地方必须要指定,要么是写到磁盘要么是写到网络中,其实从上面的类图中我们发现,写网络实际上也是写文件,只不过写网络还有一步需要处理就是底层操作系统再将数据传送到其它地方而不是本地磁盘。

基于字符流

磁盘或者网络传输,最小的存储单元都是字节,而不是字符,所以 I/O 操作的都是字节而不是字符,因为处理的大多数数据都为字符,为了操作方便,存在了字符流。字节到字符的转换必定需要编码转换,中文乱码比较多(英文就不存在这个问题)。


Reader.png
Writer.png

两者转换的桥梁

读的过程

从字节到字符,通过InputStreamReader类。

InputStreamReader 构造方法
InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, Charset cs) 创建使用给定字符集的 InputStreamReader。
InputStreamReader(InputStream in, CharsetDecoder dec) 创建使用给定字符集解码器的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName)创建使用指定字符集的 InputStreamReader。

InputStreamReader.jpg

InputStream 到 Reader 的过程要指定编码字符集,否则将采用操作系统默认字符集,很可能会出现乱码问题。FileReader是InputStreamReader的子类。

try { 
           StringBuffer str = new StringBuffer(); 
           char[] buf = new char[1024]; 
           FileReader f = new FileReader("file"); 
           while(f.read(buf)>0){ 
               str.append(buf); 
           } 
           str.toString(); 
} catch (IOException e) {}

指定编码格式,就需要InputStreamReader了。

            StringgBuilder sb = new StringBuilder();
            //指定编码为”GBK“
            in = new InputStreamReader(new FileInputStream(file), "GBK");
            char[] buf = new char[1024];
            while (in.read(buf) > 0) {
                sb.append(buf);
            }
            System.out.println(sb);

写的过程

OutputStreamWriter.jpg

与写的过程类似,通过 OutputStreamWriter 类完成,字符到字节的编码过程,由 StreamEncoder 完成编码过程。
Code

//默认编码写入
Writer out = new FileWriter("1.txt");
out.write(s);
//"utf-8"编码写
out = new OutputStreamWriter(new FileOutputStream("1.txt"), "UTF-8");
out.write(s);

相关文章

  • 3 java的IO

    java nio Java的IO体系:旧IO新IO:nio,用ByteBuffer和FileChannel读写ni...

  • IO

    一 IO中各个流的基本用法 参考: java中的IO整理 二 IO体系 参考:看完这个,Java IO从此不在难 ...

  • Java的IO & NIO

    IO流学习总结一Java IO,硬骨头也能变软二java IO体系的学习总结三Java IO面试题 NIO与AIO...

  • JAVA IO(一)体系

    分类: 基于传输的格式: 1.字节流: InputStream OutputStream2.字符流:Writer...

  • java IO体系及常见类

    一.javaIO体系 1.基于字节的IO操作 2.基于字符的IO操作 从上图可以看到,整个Java IO体系都是基...

  • 看完这个,Java IO从此不在难

    1、IO体系 Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了。在设计 IO 相关的...

  • Java IO体系

    Java IO(描述内存读写硬盘) IO,常协作I/O,是Input/Output的简称,即输入/输出。通常指数据...

  • 初步接触 Java Net 网络编程

    本文目的是大概了解 Java 网络编程体系,需要一点点 Java IO 基础,推荐教程 系统学习 Java IO。...

  • 高效IO之Java IO体系(一)

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/4743806...

  • JAVA io流体系

网友评论

      本文标题:JAVA IO(一)体系

      本文链接:https://www.haomeiwen.com/subject/xjvppftx.html