io流的引入与文件字节流

  • io流:就是一根吸管,插入后,可以操作目标文件

  • io流的分类:

    按方向:输入,输出

    按大小:字节,字符

    按处理方式:

    • 处理流:“管套着管” --- 流结合流
    • 节点流:直接跟目标文件接触的流
  • 文件字节流

    • FileInputStream(输入)

    先将文件中的内容导入到程序中来

    一个字符等于两个字节,所以是16位

    package com.bjsxt.test01;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException; public class Test {
    public static void main(String[] args) throws IOException {
    //文件----->程序 //1.确定一个文件
    File f = new File("D:\\a.txt");//程序连接文件
    //2.将“一根管”插入源文件中去
    FileInputStream fis = new FileInputStream(f);
    //System.out.println(fis.available());//对文件大小进行评估--------15字节
    //3.开始“动作”
    byte[] b = new byte[8];//定义缓冲数组,数组长度为8,下面就是8个8个读字节
    int n = fis.read(b);//返回数组中占用的数量 这里的read方法可以使用数组传参,不传参就是一个一个读字节,传数组长度为8的数组就是8个8个读字节
    while(n!=-1){
    //System.out.println(n);
    for (int i = 0; i <=n-1; i++) {
    System.out.println(b[i]);//这个循环用来查看数组里面的元素
    }
    n=fis.read(b);
    }
    //4.关闭流
    fis.close();
    }
    }
    • FileOutStream(输出)
    package com.bjsxt.test01;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException; public class Test3 {
    public static void main(String[] args) throws IOException {
    //程序--->文件 //1.确定目标文件
    File f = new File("D:\\a\\b.txt");
    //2.将一个吸管插入目标文件中
    FileOutputStream fos = new FileOutputStream(f,true);//加true就是在原来的内容上进行追加,不加就是覆盖原来的内容
    //3.给一个字符串
    String str=" 附加:abc你好";
    //4.开始动作
    byte[] bytes = str.getBytes();
    /*
    for (byte b : bytes) {
    fos.write(b);
    } */
    fos.write(bytes);//这个可以代替上面注释的代码,而且更快,上面哪个是一个一个往外输
    //5.关闭流
    fos.close();
    }
    }
    • FileInputStream,FileOutStream(文件的复制)

      1. 效率低的方法
    package com.bjsxt.test02;
    
    import java.io.*;
    
    public class Test01 {
    public static void main(String[] args) throws IOException {
    //1.确定源文件
    File f1 = new File("D:\\a\\b.txt");
    //2.确定目标文件
    File f2 = new File("D:\\a\\a.txt");
    //3.将一根管插入源文件中
    FileInputStream fis = new FileInputStream(f1);
    //4.将一根管插入目标文件中
    FileOutputStream fos = new FileOutputStream(f2);
    //5.开始动作
    int n = fis.read();
    while(n!=-1){//-1就是结尾
    fos.write(n);
    n=fis.read();
    }
    //6.关闭流
    fos.close();
    fis.close();
    }
    }
    1. 效率高的方法

      注意:只往出写下标为[0,len)的数组,这是数组中的有效数组,不写无效的元素

    package com.bjsxt.test02;
    
    import java.io.*;
    
    public class Test02 {
    public static void main(String[] args) throws IOException {
    //1.确定源文件
    File f1 = new File("D:\\a\\b.txt");
    //2.确定目标文件
    File f2 = new File("D:\\a\\a.txt");
    //3.将一根管插入源文件中
    FileInputStream fis = new FileInputStream(f1);
    //4.将一根管插入目标文件中
    FileOutputStream fos = new FileOutputStream(f2);
    //5.开始动作
    byte[] b = new byte[6];
    int len = fis.read(b);//len是数组中占用的有效长度
    while(len!=-1){
    fos.write(b,0,len);//把长度为6的数组中下标【0,len)这个位置的写出去
    len = fis.read(b);
    }
    //6.关闭流
    fos.close();
    fis.close();
    }
    }

io流(io流的引入与文件字节流)的更多相关文章

  1. Java IO之字符流和文件

    前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...

  2. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  3. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流

      File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...

  4. IO库----IO类,文件输入输出,string流

    一.IO类 1.IO库类型和头文件表: 头文件 类型 iostream istream,wistream 从流读取数据 ostream,wostream 向流写入数据 iostream,wiostre ...

  5. 流Stream 文件File 流IO

    Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...

  6. File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?

    重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...

  7. io流-文件流\节点流

    FileOutputStream类(jdk1.0) 描述 java.io.FileOutputStream 类是文件字节输出流,用于将数据写入到文件中. 构造方法 //构造方法 FileOutputS ...

  8. 文件流 io.StringIo()

    import io f = io.StringIO() f.write("") f.getvalue() f.close 二进制 f = io.Bytesio()

  9. IO异常--缓冲流--转换流--序列化流( IO流2 )

    1.IO异常的处理 JDK7前处理:使用try...catch...finally 代码块,处理异常部分 // 声明变量 FileWriter fw = null; try { //创建流对象 fw ...

随机推荐

  1. SQLite在C#的使用

    SQLite在C#的使用 http://www.cnblogs.com/SharkBin/archive/2012/11/03/2752277.html System.Data.SQLite.DLL的 ...

  2. Seven xxx in Seven Weeks ebooks | 七周七 xxx 系列图书 电子书| share 分享 | free of charge 免费!

    Seven xxx  in Seven Weeks ebooks |  七周七 xxx 系列图书  电子书| share  分享 | free of charge  免费! Seven Languag ...

  3. WebIDE All In One

    WebIDE All In One web IDE Visual Studio Code vscode Code editing Redefined. Free. Built on open sour ...

  4. how to design a search component in react

    how to design a search component in react react 如何使用 React 设计并实现一个搜索组件 实时刷新 节流防抖 扩展性,封装,高内聚,低耦合 响应式 ...

  5. Python Coding Interview

    Python Coding Interview Python Advanced Use enumerate() to iterate over both indices and values Debu ...

  6. macOS & timer & stop watch

    macOS & timer & stop watch https://matthewpalmer.net/blog/2018/09/28/top-free-countdown-time ...

  7. Raspberry Pi & Node.js & WebSockets & IM

    Raspberry Pi & Node.js & WebSockets & IM Raspberry Pi 4 nvm & node.js $ curl -o- htt ...

  8. Linux & SIGUSER1

    Linux & SIGUSER1 https://stackoverflow.com/questions/10824886/how-to-signal-an-application-witho ...

  9. vue v-io 父子组件双向绑定多个数据

    vue-io-directive 可以减少使用emit,组件自带的v-model好像也只能设置一个 安装 npm i vue-io-directive 使用 import Vue from 'vue' ...

  10. 比特币市场活跃,VAST发行在即!

    截至1月25日13:30,BTC合约多空持仓人数比为1.44,市场做多人数占据优势:季度合约基差保持在1255美元上方,永续合约资金费率为正,交割及永续合约持仓总量为19.5亿美元,总体上多军占优:B ...