zoukankan      html  css  js  c++  java
  • Java IO(三)

      在Java IO提供的类中,除了前面介绍的RandomAccessFile类之外,还有一系列的io操作类。

      主要分为两大类。字符流和字节流。关系图如下:

      

      在Java IO的操作中,很好的体现了Java的面向对象的思想。一个接口或类的具体行为由子类来决定。

       字节流字节是直接操作文件,而字符流是通过缓冲区来操作文件的,所以在字符流操作结束需要刷新--flush()一下,close()方法会默认刷新。

    字节输出流:OutputStream

    在Java.io包中,OutputStream是字节输出流的最大父类。定义如下:

      public abstract class OutputStream extends Object implements Closeable,Flusable

    这个类中提供了几个基本的操作方法和写入方法:close(),flush(),write(byte[] b),write(byte[] b,int off,int len),write(int b)

      如果此时需要完成对不同对象的输出操作,则需要借助与不同的子类来为父类实例化。如果是对文件的写入,则用FileOutputStream,想内存中写入则用ByteArrayOutputStream。

    文件字节输出流:FileOutputStream

      以字节流的方式向文件中写入内容。

    实例

    package com.fuwh.stream;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    public class FileOutputStreamTest01 {
        public static void main(String[] args) throws IOException {
            //实例化一个文件输出流
            OutputStream os=new FileOutputStream(new File("OutputStream01.txt"),true);
            String hello="hello";
            String world="world!!!";
            String name="赵云";
            os.write(hello.getBytes());
            byte[] worldByte=world.getBytes();
            for(byte b:worldByte){
                os.write(b);
            }
            os.write(name.getBytes());
            os.close();
        }
    }
    View Code

    字节输入流:InputStream  

    类的定义如下:

      public abstract class InputStream extends Object implements Closeable

    这是一个抽象类,是字节输入流的最大父类。提供了一些基本的操作方法,比如:close(),read(),read(byte[] b),read(byte[] b,int off,int len)

     如果此时需要实现对文件的操作则需要使用到InputStream的子类FileInputStream。

     文件字节输入流:FileInputStream

       在这个类中提供了一些基本的操作和读入操作,read(),read(byte[] b),read(byte[] b,int off,int len),skip(long n)

    实例

    package com.fuwh.stream;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class FileInputStreamTest01 {
    
        public static void main(String[] args) throws IOException {
            //读取上一个FileOutputStream写入的文件中的内容
            File file=new File("OutputStream01.txt");
            InputStream is=new FileInputStream(file);
            byte[] b=new byte[(int) file.length()];
            is.read(b);
            System.out.println(new String(b));
            is.close();
        }
    }
    View Code

     

    字符流输出流: Writer

    Writer类字符输出流的最大父类,定义如下:

      public abstract class Writer extends Object implements Appendable,Closeable,Flushable

    这也是一个抽象类,在类中定义了一些最基本的write(char[],int off,int len),write(int c),write(String str),write(String str,int off,int len),close(),flush()等等方法,如果要实现向不同的目标输出,还需要借助于不同的子类。

    文件字符输出流:FileWriter

    此类的定义如下:

      public class FileWriter extends OutputStreamWriter

      可以发现这个类并没有直接继承Writer类,而是继承了一个继承自Writer类的OutputStreamWriter。这是一个连接字符流和字节流的桥梁。

      在本类中也提供了一些基本的字符流写入方法。

    实例

    package com.fuwh.stream;
    
    import java.io.File;
    import java.io.FileWriter;
    import java.io.Writer;
    
    public class FileWriterTest01 {
    
        public static void main(String[] args) throws Exception{
            //实例化字符文件输出流
            Writer writer=new FileWriter(new File("wirter01.txt"),true);
            writer.write("刘备:hello ");
            writer.write("world!!!".toCharArray());
            writer.close();
        }
    }
    View Code

    文件字符输入流:FileReader

     此类的定义如下:

      public class FileReader extends InputStreamReader

    跟字符文件输出流一样,不是直接继承自Reader,而是继承自一个字符输入流和字节输入流的桥梁类InputStreamReader。

    实例

    package com.fuwh.stream;
    
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.Reader;
    
    public class FileReaderTest01 {
    
        public static void main(String[] args) throws IOException {
            //实例化字符文件输入流,读取文件
            File file=new File("wirter01.txt");
            Reader reader=new FileReader(file);
            char[] cbuf=new char[(int) file.length()];
            reader.read(cbuf);
            System.out.println(new String(cbuf));
            reader.close();
        }
    }
    View Code

  • 相关阅读:
    [实战]MVC5+EF6+MySql企业网盘实战(11)——新建文件夹2
    [实战]MVC5+EF6+MySql企业网盘实战(10)——新建文件夹
    FMXUI
    x-superobject
    mORMot
    NativeXml
    superobject
    jsondataobjects
    QDAC
    DIOCP
  • 原文地址:https://www.cnblogs.com/zerotomax/p/6480996.html
Copyright © 2011-2022 走看看