温故而知新(六)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();
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Java基础(19,20(1))IO流

------- android培训、java培训、期待与您交流! ---------- 十七.复制一个图片      虽然简单,但是考试会考 思路: 1.用字节读取流对象和图片关联。 2.用字节写入...
  • u011889786
  • u011889786
  • 2015年04月03日 21:58
  • 313

【Java基础知识】IO流--字节流读写数据以及复制文件的几种方式

1、IO的分类A、按照流向【参照物JVM】 输入流 : 读取数据 输出流 : 写出数据 B、按照数据类型 (1)字节流 a、字节输入流 读取数...
  • zhuwenchao90
  • zhuwenchao90
  • 2017年01月18日 15:55
  • 2297

java基础复习(集合、泛型、IO流、多线程、Junit 、内省 、Properties、 路径问题)

集合---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快, 增删慢 ...
  • guanhang89
  • guanhang89
  • 2016年04月25日 11:29
  • 4281

IO流基础(字节流)

字节流: InputStream:是表示字节输入流的所有类的超类。      |--- FileInputStream:操作文件从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。Fil...
  • jiangzuyun2012
  • jiangzuyun2012
  • 2014年06月13日 22:48
  • 605

详细讲解JAVA中的IO流

一、流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。      ...
  • qq_27376871
  • qq_27376871
  • 2016年09月13日 11:28
  • 1562

java IO流简单总结

java IO流简单小结
  • canot
  • canot
  • 2015年12月30日 16:09
  • 1378

Java中常见的IO流及其使用

Java中常见的IO流的介绍及使用: ByteArrayInputStream & ByteArrayOutputStream FileInputStream & FileOutputStream P...
  • sunqunsunqun
  • sunqunsunqun
  • 2015年07月09日 19:54
  • 3829

Java 常用IO流操作详解

IO流大家肯定不陌生,简单整理了一下常用IO流基本用法,其他的IO流以后有时间在整理。 1.基本概念IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,...
  • MAGIC_JSS
  • MAGIC_JSS
  • 2016年05月22日 17:19
  • 10076

java IO流案例详解

流的概念和作用 学习Java IO,不得不提到的就是JavaIO流。 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据...
  • qilixiang012
  • qilixiang012
  • 2014年09月18日 17:38
  • 1959

java IO流学习总结

Java中的流,可以从不同的角度进行分类。     按流的方向分:输入流和输出流。     按处理数据单位分:字节流和字符流。     按实现功能分:节点流和处理流。       输出流:     ...
  • du_minchao
  • du_minchao
  • 2015年10月11日 12:35
  • 15248
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:温故而知新(六)Java基础:IO流(此文章暂时未写完)
举报原因:
原因补充:

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