亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消