• IO流


    IO流

    I/O 输入、输出 流(数据流动)
    数据流动的方向 读数据(输入input) 写数据(输出output)
    文件流 字符流 对象流 网络流.......
    

    1. File

    与电脑上的文件或文件夹产生一一对应的映射关系

    文件:

    电脑上的一种存储形式

    文件有不同的格式 .txt .doc .ppt .mp4 .jpg .rar ...
    文件夹---目录路径

    1.文件或目录路径名(文件夹)的抽象表示形式

    2.File与真实硬盘中的文件或文件夹 不是一个东西

    File是内存中的一个对象<--映射-->硬盘上的文件或文件夹

    2.File类中的常用方法

    canRead() canWrite() isHidden() isFile() isDirectory()

    length()

    获取文件中字节的个数

    lastModified()

    获取文件最后的修改时间-毫秒值

    *getAbsolutePath()

    获取文件的绝对路径 d://text

    绝对路径-->可以通过完整的字符串 定位盘符 文件夹 文件
    相对路径没有盘符的写法-->当前项目的所在位置找寻(F:workplaceSSMjavase ext22.txt)

    *getName()

    获取文件的名字 text.txt

    creatNewFile() 创建文件

    创建文件夹

    madkir()

    外层没有不能创建

    madkirs()

    外层没有,也会同时创建

    *getParent()

    获取当前file的父文件名

    **getParentFile()

    获取当前file的父亲对象

    String[] names=list()

    获取当前file对象所有子元素的名字

    File[] files=listFiles()

    获取当前file的所有的儿子对象

    delete()

    删除文件或空的文件夹,不能删掉带元素的文件夹
    1.文件夹的遍历---需要递归        
    2.什么叫文件流 
    读取文件中的内容          向文件中中写内容
    文件输入流               文件输出流
    字节型文件输入流          字节型文件输出流
    字符型文件输入流          字符型文件输出流  
    

    stream

    1.io

     流按照方向(功能)来区分
           in(读取)  out(写入)
      操作的目标来区分
           文件流 数组流 字符串流 数据流 对象流 网络流......
    

    2.字节IO流:

    1.字节型文件输入流:

    FileInputStream
    1.包 java.io
    2.父类--InputStream
    3.创建对象

    调用一个带File类型的构造方法

    File file = new File( new File());

    调用一个带String类型的构造方法

    File file = new File("d://test//test.txt");
    4.常用方法:
    int code=read()       每次从流管道中读取一个字节 字节的code码
    *int count=read(byte[])   每次从管道中读取若干个字节 存入数组内 返回有效元素个数
    new byte[1024]         通常创建的数组 1kb-8kb之间 1kb-1024字节
    int count=available()      返回流管道中还有多少缓存的字节数
    *skip(long n)          跳过几个字节 再读取
    *close() 关闭流通道 必须要做 放到finally 注意代码的健壮性(考虑空指针)
    多线程-->利用几个线程同时读取文件
    10000字节 5个小人同时读取
    1-2000 2001-4000 4001-6000......
    

    2.字节型文件输出

    FileOutStream
    1.java.io
    2.继承OutputStream 所有字节型输入流的父类
    3.创建对象
    new FileOutStream(File) new FileOutStream(File,append)
    new FileOutStream(String) new FileOutStream(String,append)
    4.常用方法:
    write(int code);将给定的code对应得字符写入文件
    write(byte[]) 将数组中的全部文件写入文件 
    flush() 将管道内的字节推入文件
    close() 关闭流通道
    

    3.特点

    字节流优点在于什么类型的文件都可以处理
    缺点在于处理纯文本文件时可能会产生乱码问题

    3.字符型IO流

    只能操作纯文本文件.txt 。properties /.doc(不是)

    FileReader

    1.java.io
    2.继承 InputStreamReader Reader
    3.构造方法(file,string)
    reead()
    read(char[])

    FileWriter

    2.继承 OutputStreamWriter Writer
    3.构造方法
    file boolean
    string boolean

    4.常用方法

    write(int)
    write(char[])
    write(string)
    flush close
    编码问题:
    字节型: String s="fe";
          byte[]=s.getBytes("utf-8");
          new String(byte[],"utf-8");     
    字符型:通过修改文件或ide编码格式
    

    4.文件流

     读取文件中的信息in 将信息写入文件中out
        文件流按照读取或写入的单位(字节数)大小来区分
        
       字节型文件流(1字节)
            FileInputStream/FileOutStream
       字符型文件流(2字节-1字符)
            FileReader/FileWriter
           读取文件中的内容          向文件中中写内容
           文件输入流               文件输出流
           字节型文件输入流          字节型文件输出流
           字符型文件输入流          字符型文件输出流         
     容器
     1.容量 只能存一份
     2.数组  存储好多个 数据类型统一
     3.集合 存储好多个 存储后个数还能改变 泛型--数据类型统一
     如上三个都是java中的类型(对象-->内存)
      都存储在内存中 程序执行完毕 虚拟机停止的时候 内存空间就回收了
     4.文件 存储好多信息
     文件时存储在硬盘上的-->永久性保存
     数据虽然安全 但文件不在内存中 需要通过io操作文件    
    

    5.缓冲流

    在流管道内增加缓存的数据
    让我们使用流读取的文字更加的流畅
     高级流----->创建通过低级流
     
    BufferedInputStream/BufferedOutputStream
    
    BufferedReader/BufferedWriter
    
    BuffererInputStream
    
    构建方式 使用低级流 构建
    
    基本使用与低级流的方法完全一致
    read() skip() available() close()
    
    BufferedOutputStream
    构建方式 使用低级流构建 注意 缓冲流构建的时候没有boolean类型的参数
    基本使用与低级流的方法完全一致
    write() flish() close()    
    BufferedReader
               readLine() -一次读一行
    BufferedWriter
               newLine()-换行  
    
    
    

    总结

            InputStream      OutputStream
                 Reader          Writer
    文件流 
             低级 
                 字节型 FileInputStream FileOutPutStream
                 字符型 FileReader FileWriter
             *缓冲 
                 字节型 BufferedInputStream BufferedOutputStream
                 字符型 BufferedReader  BufferedWriter   
    数组流
            byte数组      ByteArrayInputStream  ByteArrayOutputStream
            char数组      CharArrayReader    CharArrayWriter
    字符串流
             StringReader    StringWriter     
    数据流
            DataInputStream      DataOutPutStream
    *对象流-将对象直接存入文件中
       
            ObjectInputStream      ObjectOutputStream    
            对象的序列化/反序列化
            对象的序列化指的是:将一个完整的对象拆分成字节碎片 记录在文件中
                     反序列化:将文件中记录的对象 反过来组合成一个完整的对象
              如果要将对象序列化到文件中
                       需要让对象实现Serializable接口(示意性接口)
              如果要将对象反序列化 
                       需要给对象提供一个序列化的版本号
                         private long serialVersionUID=任意l;(也可以不写)
    

  • 相关阅读:
    Ajax让网站与时俱进
    暑期小学期一周总结至7月5号
    17级软件工程交流活动体会
    IE8兼容IE7模式代码:XUACompatible详解
    SQLiteHelper
    Microsoft Office OneNote 2007的安装与激活
    白石洲,让人遗憾的历史的产品
    .NET4的SQLite配置
    ADO.NET Entity Framework学习笔记(5)ESQL查询语句
    ADO.NET Entity Framework学习笔记(3)ObjectContext对象
  • 原文地址:https://www.cnblogs.com/zh93/p/13836607.html
Copyright © 2020-2023  润新知