javaSE_File,RandomAccessFile,FileFilter

File

java.lang.Object

       java.io.File

public static voidmain(String[] args) throws IOException {

              Filefile = new File("test.txt");

//  与./demo.text一样,指当前目录/项目根目录

boolean exists()

* 判断File表示的文件或目录是否真实存在

              if(!file.exists()){

boolean createNewFile() throwsIOException {}

*当前目录下创建一个文件, 并抛出异常

                     file.createNewFile();

                     System.out.println("创建完毕!");

              }

boolean delete()

*删除test.txt文件

           File file = newFile("test.txt");

           if(file.exists()){

                 file.delete();

                 System.out.println("删除完毕!");

           }

*使用delete删除目录时,必须保证该目录是一个空目录(不包含任何子项)才可以将其删除

File dir = newFile("demo");

           if(dir.exists()){

                 dir.delete();

                 System.out.println("删除完毕!");

           }

 

boolean mkdir()          

*在当前目录下创建一个目录demo

           File dir = newFile("demo");

           if(!dir.exists()){

                 dir.mkdir();

                 System.out.println("创建完毕!");

           }

boolean mkdirs()

*在当前目录下创建多级目录a/b/c/d/e/f:

           File dir = new File(

                      "a"+File.separator+

                      "b"+File.separator+

                      "c"+File.separator+

                      "d"+File.separator+

                      "e"+File.separator+

                      "f"

                      );

           if(!dir.exists()){

                 dir.mkdirs();

                 System.out.println("创建完毕!");

           }

File[]    listFiles()

获取一个目录中的内容

返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生I/O错误,则返回null。

* 获取当前目录中的所有内容

           File dir = newFile(".");

                 //获取一个目录中的所有子项

           File[] subs = dir.listFiles();

           for(File sub:subs){

                 if(sub.isFile()){

                      System.out.print("文件:");

                 }else{

                       System.out.print("目录:");

                 }

                 System.out.println(sub.getName());

           }

接口 FileFilter

Java.io

      FileFilter

*用于抽象路径名的过滤器

boolean accept(File pathname);//必须重写该接口中的抽象方法accept()

*使用文件过滤器(FileFilter)获取一个目录中满足条件的子项,其他则被忽略

File dir = newFile(".");

      FileFilter filter= new FileFilter(){                 //接口FileFilter的匿名内部类

           public boolean accept(File file) {           //重写抽象方法

                 String name = file.getName();

                 System.out.println("正在过滤:"+name);

                 returnisDirectory();

           }

      };

      File[] subs =dir.listFiles(filter);

      for(File sub :subs){

                 System.out.println(sub.getName());

           }

删除多级目录

递归

public static void main(String[] args) {

           File dir = newFile("a");

           delete(dir);

     

      }

      /**

       * 删除给定的File对象表示的文件或目录a/b/c/d/e/f

       * @paramargs

       */

      public staticvoid delete(File file){

      //递归   (方法内部调用自己方法,不是100%成立,条件写不好容易是个死循环)         if(file.isDirectory()){

                 //先删除该目录中所有内容

                 File[]subs = file.listFiles();

                 for(Filesub : subs){

                      delete(sub);

                 }

           }

           file.delete();

      }

RandomAccessFile

java.lang.Object

       java.io.RandomAccessFile

* 该类是专门用于读写文件数据的类

 * 其提供了很多方便的方法来进行读写操作

 * 其读写是基于指针进行的,总是在指针当前位置读写

RandomAccessFile有两种创建模式:

 * "r":只读模式,仅对文件数据做读取操作

 * "rw":读写模式,可以对文件数据读写

void write(int d)

* 一次写出一个字节,写出的是该int值对应的二进制中的"低八位"

*                                                                        vvvvvvvv

* 00000000       00000000    00000000    00000000

* 11111111       11111111    11111111    11111111    -1

RandomAccessFile raf = newRandomAccessFile("test.dat","rw");    

raf.write(1);

           raf.close();

int read()

 * 读取一个字节,并以int形式返回

 * 若返回的int值为-1,则表示读取到文件末尾

RandomAccessFile raf = new RandomAccessFile("test.dat","r");

           int d = raf.read();

           System.out.println(d);

           raf.close();

byte[] getBytes()

*以当前系统默认字符集将字符串转换成对应的字节

*windows:GBK

*linux:UTF-8

RandomAccessFile raf = new RandomAccessFile("raf.txt","rw");

           String str ="异能鼻祖";

 

      byte[]date = str.getBytes();//当前系统默认GBK编码形式    字符*2个字节

//   byte[] date =str.getBytes("UTF-8");//默认UTF-8编码形式      字符*3个字节

void write(byte[] date)        批量写出字节

*一次性将给定的字节数组中所有字节写入到文件中

           raf.write(date);

           System.out.println("over"+raf.length());

           raf.close();

基于指针的读写操作:

RandomAccessFile raf = newRandomAccessFile("raf.dat","rw");

long  getFilePointer()

*获取当前RandomAccessFile指针位置

           longpos = raf.getFilePointer();

           System.out.println("pos:"+pos);//pos:0

          

           int imax= Integer.MAX_VALUE;

           //4个字节

           raf.write(imax>>>24);

           raf.write(imax>>>16);

           raf.write(imax>>>8);

           raf.write(imax);

           System.out.println("pos:"+raf.getFilePointer());//pos:4

          

           //4个字节

           raf.writeInt(imax);

           System.out.println("pos:"+raf.getFilePointer());//pos:8

           //8个字节

           raf.writeLong(123L);

           System.out.println("pos:"+raf.getFilePointer());//pos:16

           //8个字节

           raf.writeDouble(123.123);

           System.out.println("pos:"+raf.getFilePointer());//pos:24

void   seek(long pos)

*移动指针到指定位置

           //将指针移动到文件第一个字节处

           System.out.println("移动指针到文件开始处");

           raf.seek(0);

           System.out.println("pos:"+raf.getFilePointer());//pos:0

int   readInt()

*连续读取4个字节,并转换为int返回

 * 如果在读取int值的过程中发现读取到了文件末尾,则抛出EOExpection

           int i= raf.readInt();

           System.out.println("i:"+i);//已经写入的4个字节imax   i:2147483647

           System.out.println("pos:"+raf.getFilePointer());

           raf.seek(8);//pos:8

           longl = raf.readLong();

           System.out.println("L:"+l);//L:123

           System.out.println("pos:"+raf.getFilePointer());//pos:16

          

           doubled = raf.readDouble();

           System.out.println("d:"+d);//d:123.123

           System.out.println("pos:"+raf.getFilePointer());//pos:24

           raf.close();


           

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值