温故而知新(六)Java基础:IO流(此文章暂时未写完)

原创 2017年09月08日 15:02:33

输入流和输出流的类层次图

这里写图片描述


I/O简介

Java提供了两种类型的输入输出流:一种是面向字节的流,数据的处理以字节为基本单位;另一种是面向字符的流,用于字符数据的处理。

  • 字节流
    字节流(Byte Stream)每次读写8位二进制数,也称为二进制字节流

  • 字符流
    字符流一次读写16位二进制数,并将其做一个字符而不是二进制位来处理

    注意:为满足字符的国际化表示,Java语言的字符编码采用的是16位的Unicode码,而普通文本文件中采用的是8位ASCⅡ码


常用I/O流

从上图可以看出,流的结构层次来说有很多。这里只介绍常用的几种。

字节流

  • InputStream字节输入流
FileInputStream : 从文件中读取的输入流
BufferedInputStream : 缓存输入流 

//构造方法

InputStream f = new FileInputStream("D:/aa.apk");
//或:
File f = new File("D:/aa.apk");
InputStream out = new FileInputStream(f);

常用方法:

这里写图片描述

  • OutputStream字节输出流
FileOutputStream : 写入文件的输出流
BufferedOutputStream : 缓冲输出流   

//构造方法
 // 创建一个向指定File对象表示的文件中写入数据的文件输出流
    FileOutputStream(File file)
    // 创建一个向指定File对象表示的文件中写入数据的文件输出流
    FileOutputStream(File file, boolean append)
    // 创建一个向具有指定名称的文件中写入数据的输出文件流
    FileOutputStream(String name)
    // 创建一个向具有指定name的文件中写入数据的输出文件流
    FileOutputStream(String name, boolean append)

常用方法:

这里写图片描述


字符流

  • Reader字符输入流
InputStreamReader :(转换流)将字节转换到字符的输入流 ——> FileReader : 从文件读取的输入流
BufferedReader : 缓冲输入字符流
  • Writer 字符输出流
OutputStreamWriter:(转换流)将字节转换到字符的输出流 ——> FileWriter: 输出到文件的输出流
BufferedWriter: 缓冲输出字符流

使用详解

  • FileInputStream / FileOutputStream
public class Test {
    public static void main(String[] args) {
        try {
            long timeMillis = System.currentTimeMillis();
            InputStream is = new FileInputStream("D:/aa.apk");
            OutputStream os = new FileOutputStream("D:/ec.apk");
            /**
             * 指定数组的大小,一次读取一个数组 之所以用1024,因为在计算机下的表示二进制,编译器你这些2的幂次方得数据处理特别快。
             */
            /**
             * 1024*1024(是1m)和 1024*1024*1024 (10m) 这样读取文件时他们的速度为什么会比4*1024慢,影响的原因是什么
             * 如果是1m或更大,这样读写时相当于先读1M在写1M,这样循环速度就慢了,但是循环次数也少了。
             * 
             * 
             * 数组大在内存中长度就越大,站的内存也越大,但是循环次数减少。 数组小在内存中长度就越小,占的内存小,但是循环次数变多了。
             * 
             * 
             * 数组给的太大也不好,太小也不好。所以影响读写速度的关键在于设备当前的内存和cpu来决定速度的
             * 
             */
            byte[] i = new byte[4 * 1024];// 作为一个缓冲区
            int i2 = 0;
            try {
                while ((i2 = is.read(i)) != -1) {
                    System.out.print(new String(i, 0, i2) + " ");// AB CD
                    os.write(i, 0, i2);
                }
                is.close();
                os.close();
                long timeMillis1 = System.currentTimeMillis();
                System.out.println(String.valueOf(timeMillis1 - timeMillis) + ">>>>>>>>>>>");
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34501274/article/details/77894917

JavaSE高级篇---(IO流+多线程+XML+Socket+swing)

肖老师的这套课程,针对有一定Java基础的学员,详细讲解了多线程、XML、Socket、Swing、IO流、反射、注解,还有传值与传址的区别 、递归算法等,使学员熟练掌握JavaSE技术。
  • 2016年09月29日 15:01

Java IO结构各种流详解

花了两天时间研究了一下Java IO的流,对于各种流,加深了一下理解 首先看我做的思维导图文件流public class FileIO { public static void main(S...
  • tanggao1314
  • tanggao1314
  • 2016-05-22 17:22:33
  • 4014

Java基础学习之对IO流的理解

1 什么是IO   Java中I/O操作主要是指使用Java进行输入,输出操作。Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供...
  • qq_32451699
  • qq_32451699
  • 2016-08-17 14:56:21
  • 1255

java的IO流以及复制粘贴操作

前天和昨天斌哥讲了java的IO流和汉字的输入输出。并且要我们完成文件的复制粘贴,同样要用到界面,重点的复制粘贴思想是把一个文件看成是一堆二进制数,一个个字节的操作。 在java中是用FileInpu...
  • jjfly999
  • jjfly999
  • 2015-12-14 13:59:12
  • 1372

Java IO流使用,socket基础

工作内容: 1.学习异常 2..学习IO流 成果分享: 1.培训分享: 字节流和字符流的区别: 字节流:每次读取8位 字符流:每次读取16位 两者的操作形式一样,功能也一样。 区别:字节流没有使用...
  • yingtian648
  • yingtian648
  • 2016-06-22 08:52:23
  • 360

深入学习Java IO关闭

写这篇文章主要是本周排查一个问题的时候,看到一段没有正确关闭文件的代码,起初怀疑是这块导致的,最后虽然不是,但是还是有必要学习一下资源关闭的知识。一.正确关闭资源的方式在实际开发中,经常需要在程序中打...
  • liuyang755855737
  • liuyang755855737
  • 2017-03-05 10:25:38
  • 1252

Java中IO流学习总结

Java中IO流学习总结一.IO流中的结构 字符流:顾名思义,该流只能处理字符,但处理字符速度很快 字节流:可以处理所有以bit为单位储存的文件,也就是说可以处理所有的文件,但是在处理字符上的速度不如...
  • Yue_Chen
  • Yue_Chen
  • 2017-05-26 18:00:19
  • 1867

java Io流基本概念

一什么是流流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文...
  • andloves
  • andloves
  • 2015-09-28 18:01:33
  • 1000

java IO文件操作简单基础入门例子,IO流其实没那么难

java IO文件操作简单基础入门例子,IO流其实没那么难 源代码下载地址:http://www.zuidaima.com/share/1693077324073984.htm...
  • springmvc_freemarker
  • springmvc_freemarker
  • 2015-11-13 09:52:29
  • 280

黑马程序员_毕向东JAVA基础_IO流(一)

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------- IO流: 1.IO流用来处理设...
  • u010710575
  • u010710575
  • 2013-06-21 17:21:10
  • 1697
收藏助手
不良信息举报
您举报文章:温故而知新(六)Java基础:IO流(此文章暂时未写完)
举报原因:
原因补充:

(最多只允许输入30个字)