[关闭]
@MRsunhuimin 2019-07-29T13:26:50.000000Z 字数 2924 阅读 210

java (07.26-07.28)

java基础

作者:孙慧敏

0. 基本数据流的I/O总结图

输入/输出 字节流 字符流
输入流 Inputstream Reader
输出流 OutputStream Writer

1. I/O

1.1 什么是I/O

      1. Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。

      2. Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。  

1.2 Java IO模型

    使用Decorator模式,按功能划分Stream,可以动态装配这些Stream,以便获得需要的功能。

    例如,需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。

2. 数据流的基本概念

    1. 数据流是一串连续不断的数据的集合

    2. “流是磁盘或其它外围设备中存储的数据的源点或终点。”

    3. java中将输入输出抽象称为流

    4. 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。

2.1 数据流

    一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。

    采用数据流的目的就是使得输出输入独立于设备。

2.2 输入流(Input Stream)

    程序从输入流读取数据源。数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道。不关心数据源来自何种设备(键盘,文件,网络)。

2.3 输出流(Output Stream)

    程序向输出流写入数据。将程序中的数据输出到外界(显示器、打印机、文件、网络…)的通信通道。不关心数据的目的是何种设备(键盘,文件,网络)。

3. 数据流分类

3.1 字节流:

    数据流中最小的数据单元是字节

3.2 字符流:

    数据流中最小的数据单元是字符,

    Java中的字符是Unicode编码,一个字符占用两个字节。

3.3 标准I/O

    Java程序可通过命令行参数与外界进行简短的信息交换,同时,也规定了与标准输入、输出设备,如键盘、显示器进行信息交换的方式。而通过文件可以与外界进行任意数据形式的信息交换。

4. 命令行参数

      System.out.println();

5. 标准输入,输出,错误数据流

  1. //java系统自带的标准数据流:java.lang.System:
  2. public final class System extends Object{
  3. static PrintStream err;//标准错误流(输出)
  4. static InputStream in;//标准输入(键盘输入流)
  5. static PrintStream out;//标准输出流(显示器输出流)
  6. }
  7. //注意:
  8. //(1)System类不能创建对象,只能直接使用它的三个静态成员。
  9. //(2)每当main方法被执行时,就自动生成上述三个对象。

5.1 标准输入流 System.in

    System.in读取标准输入设备数据(从标准输入获取数据,一般是键盘),其数 据类型为InputStream。方法:


    1. int read()  //返回ASCII码。若,返回值=-1,说明没有读取到任何字节读取工作结束。

    2. int read(byte[] b)//读入多个字节到缓冲区b中返回值是读入的字节数

5.2 标准输出流 System.out

    System.out向标准输出设备输出数据,其数据类型为PrintStream。方法:

  1. Void print(参数)

  2. Void println(参数)

6. java.IO层次体系结构

6.1 体系结构图

                            I/O体系

        1.流式部分            2.非流式部分          3.其他   

1.1字节流           1.2字符流

字节流——InputStream     OutputStream
字符流——Writer      Reader
非流式——File        RandomAccessFile

6.2 解释

Java I/O主要包括如下几个层次,包含三个部分:

    1.流式部分――IO的主体部分;

    2.非流式部分――主要包含一些辅助流式部分的类,如:File类、RandomAccessFile类和FileDescriptor等类;

    3.其他类–文件读取部分的与安全相关的类,如:SerializablePermission类,以及与本地操作系统相关的文件系统的类,如:FileSystem类和Win32FileSystem类和WinNTFileSystem类。

主要的类如下:

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

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

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

    Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。

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

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

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

6.3 非流式文件类–File类

    在Java语言的java.io包中,由File类提供了描述文件和目录的操作与管理方法。但File类不是InputStream、OutputStream或Reader、Writer的子类,因为它不负责数据的输入输出,而专门用来管理磁盘文件与目录。

    作用:File类主要用于命名文件、查询文件属性和处理文件目录。

File类共提供了三个不同的构造函数,以不同的参数形式灵活地接收文件和目录名信息。构造函数:

    1. File (String   pathname)  

    例:File  f1=new File(“FileTest1.txt”);//创建文件对象f1,f1所指的文件是在当前目录下创建的FileTest1.txt

    2. File (String  parent  ,  String child)

    例:File f2=new  File(“D:\\dir1”,”FileTest2.txt”) ;//注意:D:\\dir1目录事先必须存在,否则异常

    3. File (File    parent  , String child)

    例: File  f4=new File(“\\dir3”);
        File  f5=new File(f4,”FileTest5.txt”);  
        //在如果 \\dir3目录不存在使用f4.mkdir()先创建一个对应于某磁盘文件或目录的File对象一经创建, 就可以通过调用它的方法来获得文件或目录的属性。

补充:

File类的方法:
    (1) exists()测试磁盘中指定的文件或目录是否存在

    (2) mkdir()创建文件对象指定的目录(单层目录)

    (3) createNewFile()创建文件对象指定的文件

    (4) list()返回目录中所有文件名字符串
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注