JAVA中的流学习

来源:互联网 发布:c定义未知长度的数组 编辑:程序博客网 时间:2024/06/06 03:41


IO的概念:

主要是指使用JAVA进行输入输出操作,JAVA所有IO机制都是基于流进行输入输出的,这些数据代表了字符或字节数据的流动系列


数据流:

数据流是一串连续不断的数据集合,类似于管道的感觉。采用数据流的目的就是使得输出输入独立于设备。

输入流:程序从输入流读取外界数据

输出流:程序向输出流写入数据,输出到外界


数据流分类:

流序列中的数据既可以是未加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。

1>字节流:数据流中最小的数据单位是字节

2>字符流:数据流中最小的数据单位是字符,JAVA中的字符是Unicode编码,一个字符占两个字节


标准IO:

java.lang.System   public final class System  extends Object{      static  PrintStream  err;//标准错误流(输出)     static  InputStream  in;//标准输入(键盘输入流)     static  PrintStream  out;//标准输出流(显示器输出流)  }  

java.IO层次体系:

5个类:(File、OutputStream、InputStream、Writer、Reader)

一个接口:Serializable

1. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。

2.InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。

3.OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。

4.Reader(文件格式操作):抽象类,基于字符的输入操作

5.Writer(文件格式操作):抽象类,基于字符的输出操作

6.RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行读取(输入输出)操作


非流式文件类(File类):

主要用于命名文件,查询文件属性和处理文件目录

import java.io.File;  import java.io.IOException;  public class TestFile {      public static void main(String args[]) throws IOException {          File dir = new File("\\root");          File f1 = new File(dir, "fileOne.txt");          File f2 = new File(dir, "fileTwo.java");          // 文件对象创建后,指定的文件或目录不一定物理上存在          if (!dir.exists())              dir.mkdir();          if (!f1.exists())              f1.createNewFile();          if (!f2.exists())              f2.createNewFile();          System.out.println("f1's AbsolutePath=  " + f1.getAbsolutePath());          System.out.println("f1 Canread=" + f1.canRead());          System.out.println("f1's len= " + f1.length());          String[] FL;          int count = 0;          FL = dir.list();          for (int i = 0; i < FL.length; i++) {              count++;              System.out.println(FL[i] + "is in \\root");          }          System.out.println("there are" + count + "file in //root");      }    }  

JAVA流派生关系:



缓冲输入输出流BufferedInputStream/BufferedOutputStream:

计算机访问外部设备非常耗时,为了减少访问外存对计算机的消耗,因此除了程序和流节点间交换数据必须的读写极之外,还应该增加缓冲机制。缓冲流就是每一个数据流分配一个缓冲区,一个缓冲区就是一个临时存储数据的内存,这样可以减少访问硬盘的次数,提高传输效率。

BufferedInputStream:数据先写到缓冲区,待缓冲区写满后一次性将数据发送给输出设备

将文件读入内存:
 FileInputStream in=new  FileInputStream( “file1.txt ” );  BufferedInputStream bin=new  BufferedInputStream( in); 

BufferedOutputStream:系统从缓冲区读取数据,待缓冲区为空时,系统才从输入设备读取数据到缓冲区

将内存写入文件:
FileOutputStreamout=new FileOutputStream(“file1.txt”);BufferedOutputStream  bin=new BufferedInputStream(out);

将键盘输入流读到内存:
InputStreamReader sin=new InputStreamReader (System.in) ;BufferedReader bin=new             BufferedReader(sin);




0 0
原创粉丝点击