zoukankan      html  css  js  c++  java
  • java的IO流

    1、IO概述

    Input :将磁盘或硬盘、键盘等数据读入到内存的
    Output:从内存输出到 磁盘、硬盘等
    主要是以内存为基准

    2、输入输出流分类

    (1)字节流
    1Byte =8 bit
    1KB=1024B
    1MB=1024KB
    1GB=1024MB
    1TB=1024GB
    1PB=1024TB——-商业的存储空间 都是以 1000为单位
    字节流可以处理所有数据类型的数据,在java中 以 Stream结尾的

    (2)字符流
    一个字符=2Byte
    字符流对于处理文本数据有优势,在java中 以 Reader 和 Writer结尾

    (3)IO包
    java.IO—HDFS 离线计算

    3、File 类

    文件和目录的抽象表示
    (1)构造方法
    File(String pathname)
    pathname:
    绝对路径:D:TZjava黄埔9期jdk+api+1.8_google
    相对路径:day23 课程笔记.txt 相对我们的当前路径来说
    ./test/a.txt
    File file=new File(pathname);
    可以写文件目录 也可以写 具体文件

    (2)常用方法
    boolean exists() 测试此抽象路径名表示的文件或目录是否存在
    String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串
    boolean isDirectory() 测试此抽象路径名表示的文件是否为目录
    boolean isFile() 测试此抽象路径名表示的文件是否为普通文件
    File[] listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件

    4、FileInputStream–输入字节流

    FileInputStream用于读取诸如图像数据的原始字节流
    public class FileInputStreamextends InputStream
    (1)构造函数
    FileInputStream(File file) 通过打开与实际文件的连接创建一个 FileInputStream ,
    该文件由文件系统中的 File对象 file命名
    File file=new File(“”);
    FileInputStream fis=new FileInputStream(file);

    (2)主要方法
    int read() 从该输入流读取一个字节的数据,,如果达到文件的末尾, -1
    int read(byte[] b) 从该输入流读取最多 b.length个字节的数据为字节数组。 -1

    5、FileOutputStream–输出字节流

    把内存中的内容 输出到文件中去
    文件输出流是用于将数据写入到输出流File
    public class FileOutputStream extends OutputStream

    (1)构造函数
    FileOutputStream(File file)
    创建文件输出流以写入由指定的 File对象表示的文件。–默认 append 为 false 覆盖更新文件内容
    FileOutputStream(File file, boolean append)
    创建文件输出流以写入由指定的 File对象表示的文件。追加模式可以设置为true

    (2)主要函数
    void write(int b)
    将指定的字节写入此文件输出流

    void write(byte[] b)
    将 b.length个字节从指定的字节数组写入此文件输出流

    void write(byte[] b, int off, int len)
    将 len字节从位于偏移量 off的指定字节数组写入此文件输出流

    void flush() 刷新此输出流并强制任何缓冲的输出字节被写出

    6、FileReader–输入字符流

    (1)构造函数
    FileReader(File file) 创建一个新的 FileReader ,给出 File读取

    (2)主要函数
    public int read() 每次读取一个字符 -1表示到文件结尾;
    public int read(char[] cbuf, int offset, int length)

    7、FileWriter-输出字符流

    (1)构造函数
    FileWriter(File file) 给一个File对象构造一个FileWriter对象
    FileWriter(File file, boolean append) 给一个File对象构造一个FileWriter对象

    (2)主要函数
    public void write(char)
    public void write(char[] cbuf,int off,int len)–写入字符数组
    public void write(String str,int off,int len)–写入字符串

    8、BufferdReader

    (1) InputStreamReader–字符输入流
    字节流 转为字符流的桥梁
    编码问题,可以指定编码。–utf-8 GBK
    InputStreamReader(InputStream in)
    创建一个使用默认字符集的InputStreamReader

    InputStreamReader(InputStream in, String charsetName)
    创建一个使用命名字符集的InputStreamReader。

    int read() 读一个字符
    int read(char[] cbuf, int offset, int length) 将字符读入数组的一部分

    (2)可以把字符流的效率提高,提供缓冲
    可以使用 FIleReader、InputStreamReader等作为参数
    实现字节流到字符流的缓冲
    a、构造函数
    BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流
    BufferedReader(Reader in, int sz) 创建使用指定大小的输入缓冲区的缓冲字符输入流

    b、主要函数
    int read() 读一个字符
    int read(char[] cbuf, int off, int len) 将字符读入数组的一部分。
    String readLine() 读一行文字 —特色

    9、BufferedWriter

    (1)OutputStreamWriter–指定字符集
    将字节流转换为字符流的桥梁
    OutputStreamWriter(OutputStream out, String charsetName)
    创建一个使用命名字符集的OutputStreamWriter

    主要方法:
    void write(char[] cbuf, int off, int len)
    写入字符数组的一部分

    void write(int c)
    写一个字符

    void write(String str, int off, int len)
    写一个字符串的一部分

    (2)BufferedWriter
    a、构造函数
    BufferedWriter(Writer out)
    创建使用默认大小的输出缓冲区的缓冲字符输出流

    BufferedWriter(Writer out, int sz)
    创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区

    b、主要方法
    newLine()
    写一行行分隔符

    void write(char[] cbuf, int off, int len)
    写入字符数组的一部分

    void write(int c)
    写一个字符

    void write(String s, int off, int len)
    写一个字符串的一部分

    10、序列化与反序列化

    序列化 就是把对象转换为字节序列的过程
    反序列化 就是把字节恢复为对象的过程

    11、ObjectOutputStream–序列化

    (1)构造函数
    ObjectOutputStream() 为完全重新实现ObjectOutputStream的子类提供一种方法,不必分配刚刚被ObjectOutputStream实现使用的私有数据

    ObjectOutputStream(OutputStream out)
    创建一个写入指定的OutputStream的ObjectOutputStream

    (2)主要方法
    void write(byte[] buf) 写入一个字节数组
    void write(byte[] buf, int off, int len) 写入一个子字节数组
    void write(int val) 写一个字节
    void writeObject(Object obj)
    将指定的对象写入ObjectOutputStream
    把类进行序列化 需要首先实现 Serializable接口
    加密传输数据的一种方式

  • 相关阅读:
    实验七:类的多态性
    实验六:类的封装(P105 3-35)
    实验五:任意输入10个int类型数据,排序输出,再找出素数
    第三周学习总结
    hbase对Java的简单操作
    hbase的shell命令
    需求工程3
    需求工程2
    软件需求1
    认识软件需求
  • 原文地址:https://www.cnblogs.com/hsiehchou/p/10403393.html
Copyright © 2011-2022 走看看