------- android培训、java培训、期待与您交流! ----------
I/O概念
I/O是指数据的输入和输出,可能是对磁盘文件的、内存或者其他程序的数据的读写操作等,数据可以是多种类型:字节、字符、对象等。
流的概念
流(stream)是指从原道目的地的自己的有序序列,流中的数据是按照先进先出的方式进行存取。输入流是指从数据源到程序的流,可以从流中读取数据;输出流是指程序到目的地的流,只能向流中进行写操作。
按照流中的数据单位不同可以分为字节流和字符流,字节流以InputStream和OutputStream为基础类;而字符流以Reader和Writer为基础类。
字节流
处理字节流的基础类是InputStream和OutputStream,Reader和Writer是为字符流而设计,但底层实现仍然是基于对字节的操作,只是为了方便处理字符。字节流的类层次结构如下:
字节输入流InputStream的主要方法有:
int read( ) //读一个字节作为返回值。若返回-1,表示读取结束
int read( byte b[ ] ) //将读入的数据放入到一个字节数组中,并返回所读字节数
int read( byte b[ ], int off, int len ) //从off位置开始读取len个字节放入到字节数组中
int available( ) //返回输入流中还有多少个字节可读。
long skip( long n )
close( )
字节输出流OutputStream的主要方法有:
void write( int b ) //向流中写入一个字节
void write( byte b[ ] ) //向流中写入字节数组的数据
void write( byte b[ ], int off, int len ) //从off位置开始向数组中写入len个字节
flush( ) //强制将缓存中的数据写出到流中,因为有的输出流会把几次写操作的数据缓存起来,满足一定条件之后再一起提交
close( )
标准流
标准输入
标准输入通过System.in作为InputStream类一个实例来实现,可以使用read()和skip(long n)两个方法
标准输出
标准输出System.out是类System的静态属性,是PrintStream的实例。PrintStream提供流的格式化输出功能,能将任意类型数据输出以字符串形式输出。System.out可以使用print和println()两个方法,并且支持任意基本数据类型和类为参数,后者换行。
字符流
Java中的字符统一使用Unicode编码,一个字符为两个字节,Java中设计了字符流类Reader和Writer及其子类用于字符的处理。字符流的所有方法执行时一旦出错都会抛出异常。其类层次如下所示:
字符输入流Reader的主要方法有:
read() //读取一个字符,返回值为读取的字符。
read(char cbuf[]) //读取一系列字符到数组cbuf[]中,返回读取字符的个数
read(char cbuf[],int off,int len) //从off位置开始,读len个字符放入到数组中
close()
字符输出流Writer的主要方法:
write(int c) //将整型值c的低16位写入输出流。
write(char cbuf[]) //将字符数组cbuf[]写入输出流。
write(char cbuf[],int off,int len) //从off位置开始向数组cbuf中写入len个字符
write(String str) //将字符串str中的字符写入输出流。
write(String str,int off,int len) //将字符串str 中从索引off开始处的len个字符写入输出流
flush() //刷新,将缓存中的字节写入到流中
close()
文件操作
I/O中对文件操作的类有:File、FileInputStream和FileOutputStream。File类提供了与机器无关的方式来描述一个文件对象的相关属性。
File类的一些主要方法有:
//文件目录生成
public File(String path) //如果path是实际存在的路径,则该File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。
public File(String path,String name) //path是路径名,name是文件名
public File(File dir,String name) //dir是路径名,name是文件名
//文件名的处理
String getName( ) //得到一个文件的名称(不包括路径)。
String getPath( ) //得到一个文件的路径名。
String getAbsolutePath( ) //得到一个文件的绝对路径名。
String getParent( ) //得到一个文件的上一级目录名。
String renameTo(File newName) //将当前文件名更名为给定文件名。
//文件属性测试 :
boolean exists( ) //测试当前File对象所指示的文件是否存在。
boolean canWrite( ) //测试当前文件是否可写。
boolean canRead( ) //测试当前文件是否可读。
boolean isFile( ) //测试当前文件是否是文件(不是目录)。
boolean isDirectory( ) //测试当前文件是否是目录。
//普通文件信息和工具 :
long lastModified( ) //得到文件最近一次修改的时间。
long length( ) //得到文件的长度,以字节为单位。
boolean delete( ) //删除当前文件。
//目录操作
boolean mkdir( ) //根据当前对象生成一个由该对象指定的路径。
String list( ) //列出当前目录下的文件。