IO字节流。

Posted zhangyuhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO字节流。相关的知识,希望对你有一定的参考价值。

字节输出流:

java.io.OutputStream :抽象类,是表示输出字节流的所有类的父类。

java.io.FileOutputStream extends OutputStream: 文件字节输出流。

  作用:把内存中的数据写入硬盘文件。

  构造方法: FileOutputStream(String name),创建一个向指定名称的文件写入数据的输出流。

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

  构造方法的作用:1、创建一个FileOutputStream对象。

           2、根据构造方法中的文件/文件路径,创建一个空文件。

           3、把FileOutputStream 对象指向该文件。

  使用步骤:1、创建FileOutputStream对象。2、write方法写数据。3、释放资源。

write方法:

public class main {
    public static void main(String[] args) throws IOException {
       File file=new File("C:\\Users\\天\\Desktop\\a.txt");
        FileOutputStream fos=new FileOutputStream(file);
        fos.write(12);
        fos.close();
    }
}
public class main {
    public static void main(String[] args) throws IOException {
       File file=new File("C:\\Users\\天\\Desktop\\a.txt");
        FileOutputStream fos=new FileOutputStream(file);
        byte[] bytes={65,66,67};
        fos.write(bytes);
        fos.close();
    }
}

续写和换行写:

续写构造函数:FileOutputStream(String name / File file,boolean append)

  append: 续写开关,true   。。。false。。。

换行符号: Windows  : \r\n   fos.write("\r\n")

字节输入流:

java.io.InputStream :字节输入流,抽象类,是表示字节输入流的所有类的父类。

java.io.FileInputStream extends InputStream.把磁盘文件读入内存。

  构造方法:FileInputStream(String name)  FileInputStream(File file)

  构造方法作用:1、创建对象,2、把对象指向要操作的文件

  使用步骤:1、创建对象。2、read() 3、释放资源。

read() 后 ,指针自动指向下一字节, 结束标记为-1.

 一次读取多个字节:

  int read(byte[] b) ,从输入流读取一定数量的字节,并存在缓冲区数组b中。

  返回的是实际读取到的字节数。

字节流练习:

复制文件:

public static void main(String[] args) throws IOException {
        File file =new File("C:\\Users\\天\\Desktop\\a.txt");
        File file1 =new File("C:\\Users\\天\\Desktop\\b.txt");
        FileInputStream fis=new FileInputStream(file);
        FileOutputStream fos=new FileOutputStream(file1,true);
        byte[] bytes=new byte[2];
        int len;
        while ((len=fis.read(bytes))!=-1){
            fos.write(bytes);
        }
        fos.close();
        fis.close();
    }

字符流:

读取中文字符时,由于编码问题,可能会出错,所以,Java提供专门处理文本文件的字符流类。

字符输入流:

java.io.Reader :抽象类,是所有字符输入流的父类。

 

java.io.FileReader extends InputStreamReader extend Reader.

FileReader: 文件字符输入流,把硬盘文件的数据以字符流的方式读入内存。

  构造方法:FileReader(String fileName / File file )

  构造方法作用:1、创建FileReader对象。2、指向要读取的文件。

字符输出流:

java.io.Writer: 抽象类, 所有字符输出流的父类。

java.io.FileWriter extends OutputStreamWriter extends Writer.

FileWriter: 文件字符输出流

  构造方法:FileWriter(String fileName / File file) 

注意:使用write()时,是把数据写入内存缓冲区先,flush()或释放资源时会刷新到文件中。

flush 和 close区别:

  flush:刷新缓冲区,流对象可继续使用。close:刷缓冲区后释放资源,流对象不可使用。

字符输出流写数据的其他方法:

  void write (char[ ] c) 写入字符数组。

  abstract void write (char[ ] c, int off, int len)

  void write( String str) 写入字符串。

  void write ( String str,int off, int len ) ..

流中异常的处理:

JDK1.7 新特性:

try后可以增加个(),里面可以定义流对象,这个流对象的作用域在try中有效,try执行完后,自动释放。

 public static void main(String[] args)  {
        File file =new File("C:\\Users\\天\\Desktop\\a.txt");
        try (FileWriter fw=new FileWriter(file);){
            fw.write(98);
            fw.close();
        }catch (IOException e){
            System.out.println(e);
        }
}

JDK9 新特性:

在try前面定义流对象, ()里引入流对象名称 ,try代码结束后,也能释放,不用写finally。

以上是关于IO字节流。的主要内容,如果未能解决你的问题,请参考以下文章

字节流与字符流的简单应用

IO编程__字节流__输入

IO编程__字节流__输出

JAVA IO 字节流 FileInputStream FileOutputStream

IO流24 - 字节流 - 字节流的四种复制文件方式对比

IO编程__字节流__输入输出__图片移动