• IO—代码—基础及其用例


    字节流:文件、图片、歌曲

    使用字节流的应用场景:如果是读写的数据都不需要转换成字符的时候,则使用字节流。

     

    字节流处理单元为1个字节, 操作字节和字节数组。不能直接处理Unicode字符

    字节流可用于任何类型的对象,包括二进制对象,字符流只能处理字符或者字符串.

    如果是 音频文件、图片、歌曲,就用字节流好点

    字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的

    字节流在操作文件时,即使不关闭资源(close方法),文件也能输出

     

    字符流:关系到中文

    使用字符流的应用场景:如果是读写字符数据的时候则使用字符流。

     

    字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串。

    如果是关系到中文(文本)的,用字符流好点

    字符流在操作的时候是使用到缓冲区的

    流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush 方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

     

    需要缓冲的流:

    BufferedInputStream, BufferedOutputStream,( 字节流 )

    BufferedReader, BufferedWriter( 字符流 )

     

    需要封装基础流:

    BufferedReader和BufferedWriter

    ObjectInputStream 和 ObjectOutputStream

    DataInputStream 和 DataOutputStream

     

    IO—对象流

    ---------------------------------------------------------------------------------------

    public static void main(String[] args) {

    //封装 一个序列化的输出流

    ObjectOutputStream oos =null;

    try {

    oos = new ObjectOutputStream(new FileOutputStream(

    "E:/Domi/txt/4.txt"));

    Student st1 = new Student("张三", 32);

    Student st2 = new Student("张lis", 32);

    ArrayList<Student> ls = new ArrayList<Student>();

    ls.add(st1);

    ls.add(st2);

    oos.writeObject(ls);

    } catch (Exception e) {

    e.printStackTrace();

    }finally{

    try {

    oos.close();

    } catch (Exception e2) {

    e2.printStackTrace();

    }

    }

    }

    -----------------------------------------------------------------------------------------------

    public static void main(String[] args) {

    //读取对象

    ObjectInputStream ois = null;

    try {

    ois = new ObjectInputStream(

    new FileInputStream("E:/Domi/txt/4.txt"));

    ArrayList<Student> lis = (ArrayList<Student>) ois.readObject();

    for(Student ss:lis){

    System.out.println(ss.name+","+ss.age);

    }

    } catch (Exception e) {

    e.printStackTrace();

    }finally{

    try {

    ois.close();

    } catch (Exception e2) {

    e2.printStackTrace();

    }

    }

    }

    -------------------------------------------------------------------------------------------------

    IO—字符流

    public static void main(String[] args) throws IOException {

    BufferedReader bf =null;

    BufferedWriter bw = null;

    bf = new BufferedReader(new FileReader(EDomitxt1.txt));

    bw = new BufferedWriter(new FileWriter(EDomitxt2.txt,true));

    创建中间变量

    System.out.println(bf.ready());

    String line = bf.readLine();

    while(line!=null){

    bw.write(line);

    bw.flush();

    System.out.println(line);

    line = bf.readLine();

    }

    bw.close();

    bf.close();

    }

    IO—字节流(二进制文件)

    public static void main(String[] args) {

    FileInputStream fi = null;

    FileOutputStream fo = null;

    try {

    fi = new FileInputStream("E:/Domi/txt/1.txt");

    fo = new FileOutputStream("E:/Domi/txt/2.txt", true);

    int a;

    while ((a = fi.read()) != -1) {

    //二进制a转为char输出

    System.out.println((char)a);

    fo.write(a);

    }

    } catch (Exception e) {

    e.printStackTrace();

    }finally{

    try {

    fo.close();

    fi.close();

    } catch (Exception e2) {

    e2.printStackTrace();

    }

    }

    }

    IO—字节流(图片,音,视频)

    public static void main(String[] args) throws IOException {

    DataInputStream dis=null;

    DataOutputStream dos = null;

    dis =new DataInputStream(new FileInputStream("E:\Domi\txt\music.mp3"));

    dos = new DataOutputStream(new FileOutputStream("E:\Domi\txt\top2.mp3"));

    //创建中转站

    byte[] by = new byte[1024];

    //复制文件

    int len = dis.read(by);

    while(len!=-1){

    dos.write(by);

    len = dis.read(by);

    }

    dos.close();

    dis.close();

    System.out.println("复制完毕!");

    }

    --------------------------------------------------------------------------------------------

  • 相关阅读:
    java架构师学习路线-http怎么做自动跳转https
    java架构师学习路线-如何在Azure创建容器Kubernetes集群
    java架构师学习路线-提取JDBC工具类 JDBCUtils
    java架构师学习路线-如何安装Kubernetes分布式容器
    java架构师学习路线-怎样使用kubernetes的网络隔离networkpolicy?
    java架构师学习路线-Java中增强一个类的几种方法
    java架构师学习路线-Spring事物控制特性有哪些?
    java架构师学习路线|一份完整的Java成神路线图
    java架构师学习路线-微服务系统架构
    最短路+线段树 空间宝石
  • 原文地址:https://www.cnblogs.com/domi22/p/8046676.html
Copyright © 2020-2023  润新知