现在的位置: 首页 > 综合 > 正文

java文件流的处理

2014年01月27日 ⁄ 综合 ⁄ 共 3008字 ⁄ 字号 评论关闭

  I/O处理中,最常见的是对文件的操作,java.io包中有关文件处理的类有:File、FileInputStream、FileOutputStream、RamdomAccessFile和FileDescriptor;接口有:FilenameFilter。

 

 
 ◇ 文件或目录的生成

  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( ); //列出当前目录下的文件

 【例4-3】
  import java.io.*; //引入java.io包中所有的类
  public class FileFilterTest{
    public static void main(String args[]){
     File dir=new File("d://ex"); //用File 对象表示一个目录
     Filter filter=new Filter("java"); //生成一个名为java的过滤器
     System.out.println("list java files in directory "+dir);
     String files[]=dir.list(filter); //列出目录dir下,文件后缀名
                       为java的所有文件

     for(int i=0;i<files.length;i++){
      File f=new File(dir,files[i]); //为目录dir 下的文件或目录
                       创建一个File 对象

       if(f.isFile()) //如果该对象为后缀为java的文件,
                则打印文件名

        System.out.println("file "+f);
       else
        System.out.println("sub directory "+f ); //如果是目录
                             则打印目录名

     }
    }
   }
   class Filter implements FilenameFilter{
    String extent;
    Filter(String extent){
     this.extent=extent;
    }
    public boolean accept(File dir,String name){
     return name.endsWith("."+extent); //返回文件的后缀名
    }
   }

文件的顺序处理:

类FileInputStream和FileOutputStream用来进行文件I/O处理,由它们所提供的方法可以打开本地主机上的文件,并进行顺序的读/写。例如,下列的语句段是顺序读取文件名为text的文件里的内容,并显示在控制台上面,直到文件结束为止。

FileInputStream fis;
   try{
    fis = new FileInputStream( "text" );
   System.out.print( "content of text is : ");
     int b;
     while( (b=fis.read())!=-1 ) //顺序读取文件text里的内容并赋值
                    给整型变量b,
直到文件结束为止。
     {              
       System.out.print( (char)b );
     }
   }catch( FileNotFoundException e ){
   System.out.println( e );
   }catch( IOException e ){
   System.out.println( e );
   }

文件的随机处理

对于InputStream 和OutputStream 来说,它们的实例都是顺序访问流,也就是说,只能对文件进行顺序地读/写。随机访问文件则允许对文件内容进行随机读/写。在java中,类RandomAccessFile 提供了随机访问文件的方法。类RandomAccessFile的声明为:
public class RandomAccessFile extends Object implements DataInput, DataOutput

接口DataInput 中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数。如:readBoolean( )、readInt( )、readLine( )、readFully( ) 等。

  接口DataOutput 中定义的方法主要是向流中写入基本类型的数据、或者写入一定长度的字节数组。如:writeChar( )、writeDouble( )、write( ) 等。 下面详细介绍RandomAccessFile类中的方法。

 ◇ 构造方法:
  RandomAccessFile(String name,String mode); //name是文件名,mode
          //是打开方式,例如"r"表示只读,"rw"表示可读写,"

  RandomAccessFile(File file,String mode); //file是文件对象

 ◇ 文件指针的操作
  long getFilePointer( ); //用于得到当前的文件指针
  void seek( long pos ); //用于移动文件指针到指定的位置
  int skipBytes( int n ); //使文件指针向前移动指定的n个字节

 

 

 

 

 

 

抱歉!评论已关闭.