黑马程序员——Java IO概述

来源:互联网 发布:大学数学网络教学平台 编辑:程序博客网 时间:2024/05/01 15:34

--------------------- android培训java培训、期待与您交流! ---------------------


黑马程序员——Java IO概述 

 

对程序语言设计者来说,设计一个令人满意的I/O(输入输出)系统,是件极艰巨的任务。

——摘自《Thinking in Java》

 

输入(Input)/输出(Output)系统,简称为I/O系统,使用任何语言编写的程序都会涉及I/O,I/O是一种非常重要的操作。一种最常见的情况是数据输入来自键盘,而数据输出输送到显示器上。对于I/O系统,Java将之抽象化为流(Stream)对象来解决,对于不同的I/O问题,提供了相应的流对象解决方案。

 

一、流式输入/输出基础

流是数据的有序序列。它既可以是未加工的原始二进制数据,也可以是经过一定编码处理后的特定数据,如字节流序列、字符流序列等。

当程序需要读取数据时,就会开启一个通向数据源的输入流,这个数据库源可以是磁盘文件、键盘或网络套接字。类似地,当程序需要写入数据的时候,就会开启一个通向目的地的输出流。这个目的地可以是控制台、磁盘文件或相连的网络。输入流、输出流分别如下图所示。

二、目录和文件操作

一个File类的对象,表示了磁盘上的文件或目录,File类提供了与平台无关的方法来对盘上的文件或目录进行操作,File类直接处理文件和文件系统。File类没有指定信息怎样从文件读取或向文件存储。

下面的构造方法可以用来生成File 对象:

File(StringdirectoryPath)

File(StringdirectoryPath, String filename)

File(FiledirObj, String filename)

这里,directoryPath是文件的路径名,filename 是文件名,dirObj 是一个指定目录的File 对象

举例说明:

FilemyFile = new File(" myfile. txt");

FilemyDir = new File(" MyDocs");

FilemyFile = new File( myDir, "myfile. txt");

这些构造方法取决于访问文件的方式。例如,若在应用程序里只用一个文件,第一种创建文件的结构是最容易的。但若在同一目录里打开数个文件,则后种方法更好一些。

目录管理

– 目录操作的主要方法为:

– publicboolean mkdir() 根据抽象路径名创建目录。

– publicString[] list() 返回抽象路径名表示路径中的文件名和目录名。

文件管理

– 在进行文件操作时,常需要知道一个关于文件的信息。

  Jave的File类提供了方法来操纵文件和获得一个文件的信息。另外,File类还可以对目录和文件进行删除、属性修改等管理工作。

File 类定义了很多获取File对象标准属性的方法。例如getName( )返回文件名,getParent( )返回父目录名,exists( )在文件存在的情况下返回true,反之返回false。然而File类是不对称的。说它不对称,意思是虽然存在允许验证一个简单文件对象属性的很多方法,但是没有相应的方法来改变这些属性。

File类中的常用方法

StringgetName()

StringgetPath()

StringgetAbsolutePath()

StringgetParent()

booleanrenameTo( File newName)

longlength()

booleandelete()

booleanmkdir()

String[]list()

三、字节流/字符流

流(Stream)是字节的源或目的。

两种基本的流是:输入流(Input Stream)和输出流(Output Stream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。

InputStream

Ÿ  三个基本的读方法

abstract int read() :读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。

int read(byte[] b):将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。

int read(byte[] b,int off, int len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。

Ÿ  其它方法

long skip(long n) :在输入流中跳过n个字节,并返回实际跳过的字节数。

int available() :返回在不发生阻塞的情况下,可读取的字节数。

void close() :关闭输入流,释放和这个流相关的系统资源。

void mark(int readlimit):在输入流的当前位置放置一个标记,如果读取的字节数多于readlimit设置的值,则流忽略这个标记。

void reset() :返回到上一个标记。

boolean markSupported():测试当前流是否支持mark和reset方法。如果支持,返回true,否则返回false。

 java.io包中 InputStream的类层次


  OutputStream

Ÿ  三个基本的写方法

abstract void write(int b) :往输出流中写入一个字节。

void write(byte[] b) :往输出流中写入数组b中的所有字节。

void write(byte[] b,int off, int len) :往输出流中写入数组b中从偏移量off开始的len个字节的数据。

Ÿ  其它方法

void flush() :刷新输出流,强制缓冲区中的输出字节被写出。

void close() :关闭输出流,释放和这个流相关的系统资源。



java.io包中 OutputStream的类层次

 


----------- android培训、java培训、期待与您交流! --------------

---------- 详细请查看:http://edu.csdn.net/heima---------


原创粉丝点击