IO操作-知识概要

来源:互联网 发布:java程序设计流程图 编辑:程序博客网 时间:2024/06/06 00:46
一,File类
该类提供了管理文件或目录的方法,File类的实例表示系统中的一个文件或者文件夹。
常用方法:
boolean createNewFile() ,当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 
boolean delete() ,删除此抽象路径名表示的文件或目录。 
boolean exists() ,测试此抽象路径名表示的文件或目录是否存在。 
String getName() , 返回由此抽象路径名表示的文件或目录的名称。 
String getParent() ,返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 
String getPath() , 将此抽象路径名转换为一个路径名字符串。 
boolean isAbsolute() ,测试此抽象路径名是否为绝对路径名。 
boolean isDirectory() ,测试此抽象路径名表示的文件是否是一个目录。 
boolean isFile() , 测试此抽象路径名表示的文件是否是一个标准文件。
String[] list() , 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 
String[] list(FilenameFilter filter) ,返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 
File[] listFiles() ,返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 
File[] listFiles(FileFilter filter) ,返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 
File[] listFiles(FilenameFilter filter) ,返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 
boolean mkdir() ,创建此抽象路径名指定的目录。 
boolean mkdirs() ,创建此抽象路径名指定的目录,包括所有必需但不存在的父目录 。

list与listFiles的区别?listFiles参数FileFilter和FilenameFilter的区别?

基本方法演示。


二,IO流
流:java中,文件的输入和输出是通过流来实现的,流的概念源于UNIX中管道的概念。一个流,一定有源端和目的端。对于流而言,不用关心数据是如何传输的。输入Input和输出Output都是针对计算机的内存而言的,因此也简称I/O流。
流的分类:
按照方向分为输入流和输出流。
按功能分为节点流和过滤流。节点流又分为字节流和字符流。


三,节点流
字节流
字节流一般适用于操作二进制文件,如(图片,文件等)。所有字节流类都继承自InputStream或OutputStream两个抽象类。

InputStream类:FileInputStream子类,ByteArrayInputStream子类,System.in。。。
OutputStream类:FileOutputStream子类,ByteArrayOutputStream子类。。。


InputStream类常用的方法:
int available(),返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。 
  void close(),关闭此输入流并释放与该流关联的所有系统资源。 
abstract  int read(),从输入流中读取数据的下一个字节。 
  int read(byte[] b),从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。 
  int read(byte[] b, int off, int len),将输入流中最多 len 个数据字节读入 byte 数组。 
  long skip(long n) ,跳过和丢弃此输入流中数据的 n 个字节。 

字符流
所有的字符流类都继承自Reader和Writer两个抽象类。原先的I/O类库只能支持8位的字节流,所以不能很好的处理16位的Unicode字符。
Reader类:InputStreamReader子类,FileReader子类,CharArrayReader子类。。。
Writer类:OutputStream子类,PrintWriter子类,FileWriter子类,CharArrayWriter子类。。。

Reader的常用方法:
abstract  void close(),关闭该流并释放与之关联的所有资源。
  int read(),读取单个字符。 
  int read(char[] cbuf),将字符读入数组。 
abstract  int read(char[] cbuf, int off, int len),将字符读入数组的某一部分。 
  int read(CharBuffer target),试图将字符读入指定的字符缓冲区。 
long skip(long n),跳过字符。
基本用法演示。

四,过滤流

缓冲流:前面的字节流和字符流都没有使用缓冲区,这就意味着,每次的读写操作都要交给操作系统来处理。这样的做法可能会对系统的性能造成很大的影响,因为每次访问操作都可能会引发磁盘硬件的读写或网络的访问,这些磁盘硬件读写或网络访问会占用大量的资源,影响效率。缓冲流是一种装饰器类,目的是让原字节流,字符流新增缓冲的功能。常使用BufferedInputStream或BufferedOutputStream来进行修饰。


字节流转为字符流:将一个字节流转为一个字符流,通常使用InputStreamReader或OutputStreamWriter进行转换。
数据流:简单来说就是允许字节流直接操作基本数据类型和字符串。常用DataInputStream或DataoutputStream进行转换。
对象流:简单来说就是讲对象作为流进行读写。该对象的类必须要实现Serializable接口,才能使用对象流操作,也叫能序列化的类。使用ObjectInputStream或ObjectOutputStream来装取对象。常见的String,一些集合类也都是有实现Serializable接口的。
基本用法演示。


五,随机文件读写
RandomAccessFile类:实例支持对随机访问文件的读取和写入。
常用方法:
RandomAccessFile(File file, String mode) ,创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。 
RandomAccessFile(String name, String mode) , 创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。 
参数mode可写的值:
"r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。  
"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。  
"rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。  
"rwd" 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。 

long getFilePointer() , 返回此文件中的当前偏移量。 
  long length() , 返回此文件的长度。
int read() ,从此文件中读取一个数据字节。 
  int read(byte[] b) ,将最多 b.length 个数据字节从此文件读入 byte 数组。 
  int read(byte[] b, int off, int len) ,将最多 len 个数据字节从此文件读入 byte 数组。 
int readInt() ,从此文件读取一个有符号的 32 位整数。 
  String readLine() ,从此文件读取文本的下一行。 
void write(byte[] b) ,将 b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。 
  void write(byte[] b, int off, int len) ,将 len 个字节从指定 byte 数组写入到此文件,并从偏移量 off 处开始。 
  void write(int b),向此文件写入指定的字节。 
void seek(long pos) ,设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。 
  void setLength(long newLength),设置此文件的长度。 
  int skipBytes(int n),尝试跳过输入的 n 个字节以丢弃跳过的字节。 
基本用法演示。

原创粉丝点击