美文网首页
Java学习Day16

Java学习Day16

作者: JayMeWangGL | 来源:发表于2019-09-26 12:22 被阅读0次

今日学习内容总结

  • 字节流的输入及输出

IO流

IO的分类

根据数据的流向分为:输入流输出流

  • 输入流 :把数据从其他设备上读取到内存中的流。
  • 输出流 :把数据从内存 中写出到其他设备上的流。

格局数据的类型分为:字节流字符流

  • 字节流 :以字节为单位,读写数据的流。
  • 字符流 :以字符为单位,读写数据的流。

字节流

字节输出流(OutputStream)

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) :将指定的字节输出流。

close方法,当完成流的操作时,必须调用此方法,释放系统资源。

FileOutputStream类

java.io.FileOutputStream类是文件输出流,用于将数据写出到文件。

构造方法

  • public FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件。
  • public FileOutputStream(String name): 创建文件输出流以指定的名称写入文件。

当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有这个文件,会创建该文件。如果有这个文件,会清空这个文件的数据。

相关代码:

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

public class demo01 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("D:\\a.txt");
        fos.write(97);
        fos.close();
    }
}

写出字节write(int b) 方法,每次可以写出一个字节数据

写出字节数组write(byte[] b),每次可以写出数组中的数据

写出指定长度字节数组write(byte[] b, int off, int len) ,每次写出从off索引开始,len个字节

数据追加续写

  • public FileOutputStream(File file, boolean append): 创建文件输出流以写入由指定的 File对象表示的文件。
  • public FileOutputStream(String name, boolean append): 创建文件输出流以指定的名称写入文件。

这两个构造方法,参数中都需要传入一个boolean类型的值,true 表示追加数据,false 表示清空原有数据。这样创建的输出流对象,就可以指定是否追加续写了
代码示例:

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

public class demo02 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("D:\\HelloWorld.txt",true);
//        fos.write("Hello".getBytes());//第一次执行代码
        fos.write("World".getBytes());//第二次执行的代码
        fos.close();
    }
}

数据换行输出

只需在需要换行处添加"\r\n"写入即可

public class Demo03 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("D:\\b.txt",true);
        byte[] bytes = {64,65,66,67,68,69,70,71,72};
        for (byte aByte : bytes) {
            fos.write(aByte);
            fos.write("\r\n".getBytes());
        }
        fos.close();
    }
}
  • 回车符\r和换行符\n
    • 回车符:回到一行的开头(return)。
    • 换行符:下一行(newline)。
  • 系统中的换行:
    • Windows系统里,每行结尾是 回车+换行 ,即\r\n
    • Unix系统里,每行结尾只有 换行 ,即\n
    • Mac系统里,每行结尾是 回车 ,即\r。从 Mac OS X开始与Linux统一。

字节输入流【InputStream】

InputStream的成员方法:

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

FileInputStream类

构造方法:

  • FileInputStream(File file): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
  • FileInputStream(String name): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。

读取字节数据

  1. 读取字节read方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回-1
  2. 使用字节数组读取read(byte[] b),每次读取b的长度个字节到数组中,返回读取到的有效字节个数,读取到末尾时,返回-1

使用步骤:

  1. 创建FileInputStream对象,构造方法中绑定要读取的对象
  2. 使用read方法读取文件
  3. 释放资源
public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("D:\\a.txt");
        int data=0;
        while((data=fis.read())!=-1){
            System.out.println(data);
        }
        fis.close();
    }

相关文章

网友评论

      本文标题:Java学习Day16

      本文链接:https://www.haomeiwen.com/subject/heyiuctx.html