I/O 字节输入输出

2022-02-20  本文已影响0人  粥一样温柔

字节输出流 【OutputStream】

将指定字节信息写出到目的地。定义字节输出流的基本共性功能方法。此抽象类是字节输出流的超类。

public void close();
public void flush();
public void write(byte[] b);
public void write(byte[] b,int off,int len);

文件字节输出流 【FileOutputStream】

FileOutputStream extends OutputStream

//构造方法
FileOutPutStream(String name);
FilreOutPutStream(File file);
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;

public class FileOutputStreamDemo {
    public static void main(String[] args) throws IOException {
        byte[] byte0 = {97,98,99,100};
        byte[] byte1 = "你好".getBytes(StandardCharsets.UTF_8);
        FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\forever\\Desktop\\summer.txt",false);
        fileOutputStream.write(97);
        fileOutputStream.write(byte0);
        fileOutputStream.write(byte1);
        System.out.println(Arrays.toString(byte1));
        fileOutputStream.close();
    }
}
//运行结果为:在桌面中的summer.txt文件中生成文字:aabcd你好

字节输出流的续写和换行:
构造方法:
FileOutputStream(String name,boolean append);
FileOutputStream(File file,boolean append);
参数:
String name;File file:写入数据的目的地
Boolean append:追加写的开关:true(创建对象不会覆盖源文件,继续在文件末尾追加写数据);false(创建一个新文件,覆盖源文件)

换行:
windows:\r\n
Linux:/n
mac:/r

字节输入流 【InputStream】

该抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。他定义了字节输入流的基本共性功能方法。

public void close():关闭此输入流并释放与此流相关联的任何系统资源;
public abstract int read():从输入流读取数据的下一个字节;
public int read(byte[] b):从输入流中读取一些字节数,并将它们存储到字节数组b中

文件字节输入流 【FileInputStream】

jfaca.io.FileInputStream extends InputStream
作用:把硬盘文件中的数据,读取到内存中使用
构造方法:
FileInputStream(String name)
FileInputStream(File file)
参数:读取文件的数据源

import java.io.FileInputStream;
import java.io.IOException;

public class FileInputStreamDemo {
    public static void main(String[] args) throws IOException {
        int len =0;
        FileInputStream fileInputStream = new FileInputStream("C:\\Desktop\\summer.txt");
        while ((len = fileInputStream.read())!=-1){
            System.out.print((char)len);
        }
        fileInputStream.close();
    }
}

布尔表达式(len = fileInputStream.read())!=-1
1、fileInputStream.read():读取一个字节
2、len = fileInputStream.read():把读取到的字节赋值给变量len
3、(len = fileInputStream.read())!=-1:判断变量len是否不等于-1

字节输入流一次读取多个字节的方法

int read(byte[] b) 从输入流中读取一档数量的字节,并将其存储在缓冲区书中b中。
方法参数:byte[]的作用:存储每次读取到的多个字节,一般把数组长度定义为1024,或1024的整数倍
方法的返回值int:读取的有效字节个数

String类的构造方法:
String(byte[] bytes):把字节数组转换为字符串
String(byte[] bytes, int offset,int length)把字节数组的一部分转换为字符串;offset:数组的开始索引 length:转换的字节个数

import java.io.FileInputStream;
import java.io.IOException;

public class FileInputStreamDemo {
    public static void main(String[] args) throws IOException {
        byte[] bytes = new byte[1024];
        int len =0;
        FileInputStream fileInputStream = new FileInputStream("C:\\Users\\forever\\Desktop\\新建文本文档.txt");
        while ((len = fileInputStream.read(bytes))!=-1){
            System.out.print(new String(bytes,0,len));
        }
        fileInputStream.close();
    }
}

复制文件

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

public class FileOutputStreamDemo01 {
    public static void main(String[] args) throws IOException {
        byte[] bytes = new byte[1024];
        int len = 0;
        //读取文件
        FileInputStream fileInputStream = new FileInputStream("C:\\Users\\forever\\Desktop\\新建文本文档.txt");

        //写入文件
        FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\forever\\Desktop\\summer.txt",false);
        while ((len = fileInputStream.read(bytes))!=-1){
            System.out.println(new String(bytes,0 ,len));
            fileOutputStream.write(bytes,0,len);
        }
        //关闭资源
        fileOutputStream.close();
        fileInputStream.close();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读