为了账号安全,请及时绑定邮箱和手机立即绑定

JavaIO之文件目录操作

标签:
Java
一、File类

File类只能用于表示文件的信息(大小、名称等),不能用于文件的访问。

1.1 File目录操作
(1)file.exists()  判断目录(文件夹)是否存在
(2)file.mkdir()  创建该目录(文件夹)
(3)file.mkdirs()  创建该多级目录(文件夹)
(4)file.delete()  删除该目录(文件夹)
(5)file.isDirectory()  判断file是否是目录(文件夹)
(6)file.listFiles()  列出该目录下的直接子目录
1.2 File文件操作
(1)file.exists()  判断文件是否存在
(2)file.createNewFile()  创建该文件
(3)file.delete()  删除该文件
(4)file.getName()  获得文件名
(5)file.getParent()  获得文件的父路径
1.3 代码:遍历目录下的所有子目录及文件
实现步骤:
1、首先判断该目录是否存在,若不存在抛出异常;
2、再判断是否是目录,若不是则抛出异常;
3、创建一个File类型的数组,存放该目录下的直接子目录;
4、如果子目录存在,则遍历该数组中的每一个子目录,判断该子目录是否是目录;
5、如果是目录,则使用递归,继续执行此方法;
6、如果不是,则直接打印此路径到屏幕上。
    public static void listDirectory(File dir)throws IOException{ 
        if(!dir.exists()){
            throw new IllegalArgumentException("目录"+dir+"不存在!");
        }
        if(!dir.isDirectory()){
            throw new IllegalArgumentException(dir+"不是目录!");
        }

        File[] files = dir.listFiles();

        if(files!=null && files.length>0){ //dir目录下有子目录存在
            for(File file:files){
                if(file.isDirectory()){//是目录,进行递归
                    listDirectory(file);
                }else{ //不是目录,直接打印路径
                    System.out.println(file);
                }
            }
        }
    }
二、RandomAccessFile类

RandomAccessFile可访问文件内容,进行读写操作。由于支持随机访问文件,则可以访问文件的任意位置。打开文件时,文件指针在开头处point=0。该类的主要方法如下。

(1)raf.write()  写一个字节到文件中去
(2)raf.read()  读取字节
(3)raf.seek(int i)  移动指针位置到i
2.1 代码:使用RandomAccessFile进行文件读写
实现步骤:
1、新建目录及文件,实例化RandomAccessFile,对新建的文件授权读写操作;
2、每次只能写入1个字节,所以整型数据需要通过移位写入4次,字符可通过转换成字节数组进行一次性写入;
3、读取整个文件,首先要将指针移到头部0的位置,开辟一个空间为文件大小的字节数组,可一次性读取整个文件内容。
    public static void main(String[] args)throws IOException {
        File demo = new File("demo"); //不指定路径将存在项目中的相对路径
        if(!demo.exists()){
            demo.mkdirs();
        }
        File file = new File(demo,"raf.dat");
        if(!file.exists()){
            file.createNewFile();
        }

        RandomAccessFile raf = new RandomAccessFile(file,"rw");//授予读写权限

        int i = 0x7fffffff;//用write方法每次只写一个字节,所以一共要写4次
        raf.write(i>>>24);//右移24位,高8位就写进去了
        raf.write(i>>>16);
        raf.write(i>>>8);
        raf.write(i);//不右移,即最后的低8位

        //raf.writeInt(i);//可以直接写,上一段代码就是底层实现

        String s = "中";
        byte[] gbk = s.getBytes("gbk");
        raf.write(gbk);

        raf.seek(0);//读整个文件,必须把指针移到头部0的位置
        byte[] buf = new byte[(int)raf.length()];//raf.length返回long型
        raf.read(buf);//一次性读取
        System.out.println(Arrays.toString(buf));
        raf.close();//一定要加
    }

注:文章根据本站相关课程的学习笔记整理而来,有错误或其他任何问题敬请指正,欢迎共同学习交流!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件工程师
手记
粉丝
36
获赞与收藏
349

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消