zoukankan      html  css  js  c++  java
  • 5.17Java文件字节流

    5.17Java文件字节流

    操作一个程序的步骤

    • 创建源

    • 选择流

    • 操作文件

    • 释放资源


    FileInputStream--->普通的read方法返回的是实际的数据。文件字节流,一个一个的读取文件内容--->inputstream要读取内容文件必须存在

    使用字节数组分段读取--->注意返回值类型是一个文件的实际大小

    *数组里面的大小是一次读几个字节的意思。

    byte[] bytes = new byte[3]; //代表一次读三个字节--->缓冲容器
    FileInputStream输入流&&FileOutputStream输出流

    FileInputStream:通过字节的方式读取文件,适合读取所有类型的文件(图像、视频等)。

    全字符考虑FileReader

    package iostudy.ioprogramme;

    import com.sun.xml.internal.fastinfoset.tools.StAX2SAXReader;

    import java.io.*;

    /**
    * 测试FileInputStream类下的一个方法
    * 1、创建源文件
    * 2、选择流
    * 3、进行文件操作
    * 4、关闭源文件
    */
    public class IoFileInputStream {
       public static void main(String[] args) {
           //创建源文件
           File src = new File("D:/workspace/practice/main/java/iostudy/ioprogramme/abc.txt");
           //选择流--->使用InputStream
           InputStream is = null; //输入流
           //尝试进行文件操作
           try {
               is = new FileInputStream(src);
               //创建接受长度
               int temp = -1;
               //创建缓冲容器
               byte[] bytes = new byte[1024]; //缓冲容器里面的数据是数组的大小,是一次读取几个字节数据的意思
               //进行循环输出
               while ((temp=is.read(bytes))!=-1){
                   System.out.println(); //每三个读取一次。,id
                   //从中间容器当中读取数据
                   //字节数组--->字符串--->解码
                   //构建字符串
                   String str = new String(bytes, 0, temp);
                   //不删除中间空格进行读取
                   //每次读三个,最后一次拿两个
                   System.out.println(str);
              }
          }catch (FileNotFoundException e){
               e.printStackTrace();
          } catch (IOException e) {
               e.printStackTrace();
          }
      }
    }
    /*
    写代码考虑:
    1、功能
    2、可读性
    3、可维护性
    */

    FileOutputStream(文件不存在可以自行创建--->可以进行追加写入):通过字节的方式写出或追加数据到文件,适合所有类型的文件(图像、视频...)。

    全字符考虑FileWriter

    在FileOutputStream当中的构造方法:

    • 指定文件对象

    • 指定文件名称--->内部包装成file对象

    • 追加文件/新建文件--->追加文件是指从最后一行追加内容。新建文件是指从头开始重写

    • 记得flush

    package iostudy.ioprogramme;

    import java.io.*;
    import java.nio.charset.StandardCharsets;

    /**
    * 文件字节输出流
    * 1、创建源
    * 2、选择流
    * 3、具体的操作--->写出内容
    * 4、释放资源
    * @since JDK 1.8
    * @date 2021/5/17
    * @author Lucifer
    */
    public class IoFileOutputStreamNo1 {
       public static void main(String[] args) {
           //创建源文件--->不存在自动创建
           File src = new File("D:/workspace/practice/main/java/iostudy/ioprogramme/def.txt");
           //选择流--->选择输出流--->关键点在于熟悉类里面的构造器以及方法
           OutputStream os = null;
           //尝试对文件进行操作
           try {
    //           //路径赋值操作
    //           os = new FileOutputStream(src); //这是新建文件--->相当与重写
    //           //追加写入
    //           os = new FileOutputStream(src, true); //会在原有文件后面再写入内容
               /*
               1、如果将true改成false则会将原来的数据重写
                */
               os = new FileOutputStream(src, false);
               //写出
               String msg = "James Harden";
               //创建字节数组写入文件
               byte[] datas = msg.getBytes(StandardCharsets.UTF_8); //字符串--->字节数组编码(encoding)
               //整体流程:字符--->字节--->写入文件
               //将os写出
               os.write(datas, 0, datas.length); //注意形参
               //写出的过程中要注意刷新,避免数据驻留在内存中
               os.flush();
          }catch (FileNotFoundException e) {
               e.printStackTrace();
          }catch (IOException e){
               e.printStackTrace();
          }finally {
               try {
                   if (null!=os){
                       //释放资源
                       os.close();
                  }
              }catch (IOException e){
                   e.printStackTrace();
              }
          }
      }
    }

     

     

     

    It's a lonely road!!!
  • 相关阅读:
    oracle11g新建表空间和用户
    ORACLE查询数据中所存在的表,搜索指定的表
    QTP的那些事vbs通用操作数据库函数整理
    Oracle:PL/SQL 中如何使用Array
    QTP的那些事—QTP11+QC11框架整理源码(个人原创)
    QTP的那些事灵活运用其中的datatable对象
    QTP的那些事共享对象库的使用
    zoj 1092 Arbitrage (poj 2240)
    zoj 1655 Transport Goods
    UVA 11292 Dragon of Loowater
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14779461.html
Copyright © 2011-2022 走看看