Java日志第36天 2020.8.10

IO

java.io.outputStream:字节输出流

  此抽象类是表示输出字节流的所有类的超类

 

定义了一些子类共性的成员方法:

- public void close():关闭此输出流并释放与此流相关联的任何系统资源

- public void flush():刷新此输出流并强制任何缓冲的输出字节被写出

- public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流

- public void write(byte[] b, int off, int len):从指定的字节数组写入len字节,从偏移量off开始输出到此输出流

- public abstract void write(int b):将指定的字节输出流

 

java.io.FileOutputStream extends OutputStream

FileOutputStream:文件字节输出流

 

构造方法

FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流

FileOutputStream(File file):创建一个向指定File对象表示的文件中写入数据的文件输出流

 

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;

public class Demo01OutputStream {

    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\a.txt");
        fos.write(97);//a
        fos.close();

        /*
            public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流
            如果第一个字节是正数(0-127),那么显示的时候会查询ASCII表
            如果第一个字节是负数,那第一个字节会和第二个字节组成一个中文显示,查询系统的默认码表(GBK)
         */

        FileOutputStream fos2 = new FileOutputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\b.txt");
        byte[] b = {65, 66, 67, 68, 69};
        byte[] b2 = {-65, -66, -67, 68, 69};
        fos2.write(b);
        fos2.write(b2);
        fos2.close();

        /*
            public void write(byte[] b, int off, int len)
            从指定的字节数组写入len字节,从偏移量off开始输出到此输出流
         */
        FileOutputStream fos3 = new FileOutputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\c.txt");
        fos3.write(b, 1, 2);

        /*
            写入字符的方法
            使用String类中的方法把字符串转换为字节数组
            byte[] geyBytes() 把字符串转换为字节数组
         */
        byte[] bytes = "你好".getBytes();
        System.out.println(Arrays.toString(bytes));
        fos3.write(bytes);
        fos3.close();
    }
}

*笔记本打开文件时,都会查询编码表,把字节转换为字符表示

 

数据的追加续写与换行

续写使用两个参数的构造方法:

- FileOutputStream(String name, boolean append)创建一个向具有指定name的文件中写入数据的输出文件流

- FileOutputStream(File file, boolean append)创建一个向指定File对象表示的文件中写入数据的文件输出流

 

参数:

boolean append:追加写开关

  如果是true:创建对象不会覆盖源文件,继续在文件的末尾追加写数据

  如果是false:创建一个新文件,覆盖源文件

 

换行需要用换行符:

Windows:\r\n

 

import java.io.FileOutputStream;
import java.io.IOException;

public class Demo01OutputStream {

    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("E:\\Java\\Practice\\src\\Practice\\demo15\\a.txt",true);
        for (int i = 0; i < 10; i++) {
            fos.write("你好".getBytes());
            fos.write("\r\n".getBytes());
        }
        fos.close();
    }
}

 

 

明日任务:字节输入流的学习

posted @ 2020-08-10 10:10  Gazikel  阅读(107)  评论(0编辑  收藏  举报