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!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14779461.html