JAVA流

来源:互联网 发布:java的compare方法 编辑:程序博客网 时间:2024/05/18 02:02

流概念

流是一串连续不断的数据的集合,就像水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段一段地向数据流管道中写入数据,这些数据段会按先向顺序形成一个长的数据流。对数据的读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。

流的分类方式

输入流和输出流

以程序为参考点,按数据流的方向不同分为输入流和输出流

这里写图片描述

字节流和字符流

按处理数据的单位不同分为字节流和字符流

节点流和处理流

按功能不同分为节点流和处理流

流的四大抽象类

J2SDK所提供的所有流类型位于包java.io内都分别继承以下四种抽象流类型

这里写图片描述

  • InputStream(字节输入流)

    • 结构

    这里写图片描述

    • 基本方法
      InputStream是一个抽象类,程序可以通过InputStream类从文件中把内容读取出来,首先看一下InputStream类的定义:
public abstract class InputStream extends Object implements Closeable

如果现在是从文件中读取,因为InputStream本身是一个抽象类,必须依靠其子类FileInputStream来实现, 看FileInputStream类的构造方法:

public FileInputStream(File file) throws FileNotFountException

读取文件:

import Java.io.File;import Java.io.InputStream;import Java.io.FileInputStream;import Java.io.IOException;public class ReadFile{    public static void main(String[] args)throws IOException{        File file = new File("d:"+File.separator+"test.txt");        InputStream inputstream = new FileInputStream(file);        byte[] b = new byte[(int) f.length()];        inputstream.read(b);        inputstream.close();        system.out.println(new String b);    }}

如果一个字节一个字节读入,并且不知道文件的大小:

import Java.io.File;import Java.io.InputStream;import Java.io.FileInputStream;import Java.io.IOException;public class ReadFile{    public static void main(String[] args)throws IOException{        File file = new File("d:"+File.separator+"test.txt");        InputStream inputstream = new FileInputStream(file);        byte[] b = new byte[1024];        int temp = 0;        int len = 0;        while((temp=inputstream.read())!=-1){//-1标志文件读完            b[len]=(byte)temp;            len++;        }        inputstream.close();        system.out.println(new String(b,0,len))    }}
  • OutputStream类(字节输出流)

    • 结构
      这里写图片描述

    • 基本方法
      OutputStream类和InputStream类一样,都是抽象类,如果要操作一个文件,可以使用FileOutputStream类。
      OutputStream类的定义:

public abstract class OutputStream extends Objects implements Closeable,Flushable

FileOutputStream类的构造方法:

public FileOutputStream(File file) throws FileNotFoundException

写数据:

import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.io.IOException;public class WriteFile{    public static void main(string[] args) throw IOException{        File file = new File("d:" + File.separator+"test.txt");        OutputStream outputstream = new FileOutputStream(file)        String str = "Hello World"        byte[] b = str.getBytes();        outputstream.write(b);        outputstream.close();    }}
  • Reader类(字符输入类)

    • 结构

    这里写图片描述

    • 基本方法
      Reader类是使用字符的方式从文件中取出数据,定义如下:
public abstract class Reader extends Objects implements ReadableCloseable

Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。FileReader的构造方法定义如下:

public FileReader(File file)throws FileNotFoundException

读取数据:

import java.io.File;import java.io.FileReader;import java.io.Reader;import java.io.IOException;public class Read{    public static void main(string[] args)throw IOException{        File file = new File("d:" + File.separator+"test.txt");        Reader inputreader = new FileReader(file);        char[] c=new char[1024];        int len=inputreader.read(c);        inputreader.close();        System.out.println(new String(c,0,len));            }}
  • Wirter类(字符输出类)

    • 结构

    这里写图片描述

    • 基本方法
      Wirter类使用子类FileWriter向文件中写入内容
      Wirter类的定义:
public abstract class Writer extends Object implements AppendableCloseableFlushable

FileWriter类的构造方法

public FileWriter(File file)throws IOException

写文件:

import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;public class Test16 {    public static void main(String[] args) throws IOException {    File f = new File("d:" + File.separator+"test.txt");    Writer out=new FileWriter(f);    String str="Hello World";    out.write(str);    out.close();    }}

总结

目前对于这些内容还只是概念上的理解,没有再具体实例中看到,也没有具体实践,后面继续!

2 0
原创粉丝点击