文件

<small>

文件 目錄(信息)

文件目錄信息類

new File(String pathName)

此構(gòu)造絕對不是創(chuàng)建文件卡睦,僅僅表示根據(jù)抽象路徑pathName践险,創(chuàng)建一個File文件實例
File實例肢藐,并不能說明文件就真實存在故河,只是用來判斷文件目錄是否真實存在

boolean createNewFile()

創(chuàng)建文件并返回是否創(chuàng)建成功

boolean delete()

刪除文件

boolean isFile()

判斷是否為文件

boolean isDirectory()

判斷是否為目錄
程序?qū)嵗?/p>

String pathName = "E:\\ksxx\\所有知識點講解\\21\\demo.txt";
        //創(chuàng)建一個File實例
        File file = new File(pathName);
        boolean exists()
         */
        boolean isExists = file.exists();
        System.out.println("文件是否存在:"+isExists);
        if(!isExists){
            boolean isCreateFileOk = 
                    file.createNewFile();
            System.out.println(isCreateFileOk?"創(chuàng)建文件成功":"創(chuàng)建文件失敗");
        }else{
            boolean isDeleteFileOk = file.delete();
            System.out.println(isDeleteFileOk?"刪除文件成功":"刪除文件失敗");
        }
pathName = "E:\\";
        file = new File(pathName);
        System.out.println("E:\\存在:"+file.exists());
boolean isFile = file.isFile();
        System.out.println(isFile?"E:\\是文件":"E:\\不是文件");
boolean isDirectory = file.isDirectory();
        System.out.println(isDirectory?"E:\\是目錄":"E:\\不是目錄");
file = new File("/");
        System.out.println(file.isDirectory()?"/是目錄":"/不是目錄");
pathName = "E:"+File.separator+"ksxx"+File.separator+
                    "所有知識點講解"+File.separator+
                    "21"+File.separator+"demo.txt";
        System.out.println(pathName);
pathName = "../demo02.txt";
        file = new File(pathName);
        file.createNewFile();//創(chuàng)建當(dāng)前目錄下的demo01.t

1、windows與linux的區(qū)別:
* widows中吆豹,目錄的表示為
* 沒有根目錄,但有盤符痘煤,
* 如:C:\、D:\衷快、E:\、F:\养匈、U盤等
* linux中都伪,目錄的表示為 /
* 沒有盤符概念,但有且只有一個根目錄陨晶。
* 所有的路徑都是從根目錄出發(fā)。
* U盤被視為掛載點湿刽。
*
* 不管是什么系統(tǒng)的服務(wù)器褐耳,
* 可以利用File.separator來實現(xiàn)目錄的自動辨析。
* 當(dāng)遇到是windows系統(tǒng)服務(wù)器铃芦,就會自動填充
* 當(dāng)遇到是linux系統(tǒng)服務(wù)器,就會自動填充 /

/*
* 2仁烹、/咧虎、./與../的區(qū)別
* 如果后面不跟內(nèi)容,點后面的/可以省略(建議不要省略)
*
* / 根路徑
* ./(可以直接省略) 用來表示當(dāng)前目錄下
* [./]../ 用來表示上級目錄
*
* 絕對路徑:
* 以 / 開頭的路徑砰诵。
*
* 相對路徑:
* 以./貨../ 開頭的路徑。

long length()

獲得文件的大凶芎(字節(jié)量)

lastModified()

獲得文件最后一次修改時間

public class FileDemo02 {
    public static void main(String[] args) throws IOException {
        /*
         * File:文件目錄信息類
         *   查詢文件信息方法
         */
        String pathName = 
                "E:\\ksxx\\所有知識點講解\\21\\demo.txt";
        //創(chuàng)建一個File實例
        File file = new File(pathName);
        /*
         * 6尉间、獲得文件的大小(字節(jié)量)
         *    long length()
         */
        long bytes = file.length();
        System.out.println("demo.txt文件大姓艹啊:"+bytes);
        
        /*
         * 7、獲得文件的最后一次修改時間
         */
        long lastModifiedTime = file.lastModified();
        System.out.println("demo01.txt最后一次修改時間:"+new Date(lastModifiedTime));
        
        System.out.println("是否為可讀文件:"+file.canRead());
        System.out.println("是否為可寫文件:"+file.canWrite());
        System.out.println("是否為可執(zhí)行文件:"+file.canExecute());
        System.out.println("是否為隱藏文件:"+file.isHidden());
        
        System.out.println("獲得文件名:"+file.getName());
        System.out.println("獲得目錄名:"+file.getParent());
        System.out.println("獲得抽象路徑:"+file.getPath());
boolean midir();

只能創(chuàng)建單級目錄画切,只有上級目錄存在的前提下,才能創(chuàng)建單級目錄霍弹。如果多級目錄不存在,則無法創(chuàng)建典格。

boolean mkdirs

可以創(chuàng)建多級目錄

RandomAcessFile

文件讀寫操作類:可以通過File實例對文件實現(xiàn)讀寫操作。
RandomAccessFile的構(gòu)造及注意事項
* RandomAccessFile(String name,String mode)
* RandomAccessFile(File file,String mode)
*
* 構(gòu)造二砾肺,其實是對構(gòu)造一的封裝防嗡。
* RandomAccessFile(new File(name),String mode)
*
* 構(gòu)造參數(shù):
* 第一個參數(shù):字符串類型的抽象路徑
* 也可以是抽象路徑封裝好的File實例。
*
* 第二個參數(shù):讀寫模式
* 讀:r (read)
* 寫:w (write)
*
* RandomAccessFile對象創(chuàng)建的
* 注意事項:
* 1裙盾、文件路徑(文件所在的目錄)非真實存在他嫡,
* 會拋出異常:FileNotFoundException
* 2、文件路徑(文件所在的目錄)真實存在涮瞻,
* 只不過是文件不存在:
* ①、只讀模式近顷,必須要求文件存在宁否,
* 否則拋出FileNotFoundException
* ②、讀寫模式慕匠,文件不存在台谊,
* 會自動創(chuàng)建文件。

RandomAccessFile(String name,String mode)
RandomAccessFile(File file,String mode)
String pathName = "./demo01.txt";
        RandomAccessFile raf = 
                new RandomAccessFile(pathName,"rw");
        //或者
        File file = new File(pathName);
        raf = new RandomAccessFile(file,"rw");

文件的讀寫

單個字節(jié)的讀寫
String pathName = "./demo01.txt";
        RandomAccessFile raf = 
                new RandomAccessFile(pathName,"rw");
raf.write('a');//a
        raf.write(353);//其實寫進(jìn)去還是a
        raf.write(865);//其實寫進(jìn)去還是a
int read1 = raf.read();
//      System.out.println(read1);//-1表示讀取到文件末尾
raf.close();//讀寫完畢后锅铅,需要關(guān)閉io通道在一定意義上,就是Ctrl+S保存
raf = new RandomAccessFile(pathName,"rw");
        int read1 = raf.read();
        System.out.println(read1);//97
        
        int read2 = raf.read();
        System.out.println(read2);//97
        
        int read3 = raf.read();
        System.out.println(read3);//97
        
        int read4 = raf.read();
        System.out.println(read4);//-1
        
        raf.close();

文件的復(fù)制

單字節(jié)復(fù)制
RandomAccessFile file = 
                new RandomAccessFile("16.rar","rw");
        RandomAccessFile copyFile = 
                new RandomAccessFile("16_copy.rar","rw");
        
        long startTime = System.currentTimeMillis();
        /*
         * 要對文件實現(xiàn)單字節(jié)的讀寫操作玩荠,
         *  必須使用循環(huán)來完成。
         */
        int read = 0;
        //對file進(jìn)行單字節(jié)讀取操作
        while((read = file.read()) != -1){
            //讀一個字節(jié)
            //對copyFile進(jìn)行單字節(jié)寫操作
            copyFile.write(read);//寫
        }
        
        //讀寫完畢闷尿,要關(guān)流
        file.close();
        copyFile.close();
        long endTime = System.currentTimeMillis();
        //969128ms
        System.out.println("本次拷貝女坑,用時:"+(endTime - startTime)+"ms");
字節(jié)數(shù)組的復(fù)制
public static void main(String[] args) throws IOException {
        /*
         * 通過RandomAccessFile批量字節(jié)的讀寫操作
         *      來完成對文件16.rar的拷貝。
         *      目標(biāo)文件為16_copy.rar
         *      
         *      實現(xiàn)步驟:
         *          先對16.rar文件進(jìn)行批量字節(jié)讀取灌旧。
         *          讀取的字節(jié)绰筛,
         *          向16_copy.rar中寫描融。
         */
        RandomAccessFile file = 
                new RandomAccessFile("16.rar","rw");
        RandomAccessFile copyFile = 
                new RandomAccessFile("16_copy2.rar","rw");
        
        long startTime = System.currentTimeMillis();
        /*
         * 要對文件實現(xiàn)單字節(jié)的讀寫操作,
         *  必須使用循環(huán)來完成窿克。
         */
        int read = 0;
        byte[] buf = new byte[1024];
        //對file進(jìn)行字節(jié)數(shù)組讀取操作
        while((read = file.read(buf)) != -1){
            //讀字節(jié)數(shù)組
            //對copyFile進(jìn)行字節(jié)數(shù)組寫操作
            copyFile.write(buf);//寫
        }
        
        //讀寫完畢年叮,要關(guān)流
        file.close();
        copyFile.close();
        long endTime = System.currentTimeMillis();
        //1158ms
        System.out.println("本次拷貝,用時:"+(endTime - startTime)+"ms");

字節(jié)數(shù)組的復(fù)制效率高很多

總結(jié):
file只是文件目錄的信息類只损,根據(jù)抽象路徑,創(chuàng)建file實例叮叹,通file實例爆存,可以查詢文件,目錄的相關(guān)信息
file不代表文件本身先较,并不能對文件實現(xiàn)讀寫操作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闲勺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子霉翔,更是在濱河造成了極大的恐慌,老刑警劉巖子眶,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異粤咪,居然都是意外死亡渴杆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門囊拜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冠跷,你說我怎么就攤上這事身诺。” “怎么了霉赡?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵穴亏,是天一觀的道長。 經(jīng)常有香客問我迫肖,道長,這世上最難降的妖魔是什么故爵? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任隅津,我火速辦了婚禮,結(jié)果婚禮上伦仍,老公的妹妹穿的比我還像新娘。我一直安慰自己隧枫,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布协怒。 她就那樣靜靜地躺著卑笨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赤兴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天座舍,我揣著相機(jī)與錄音艺普,去河邊找鬼。 笑死歧譬,一個胖子當(dāng)著我的面吹牛搏存,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缩焦,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼责静,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了题翻?” 一聲冷哼從身側(cè)響起腰鬼,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姜挺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炊豪,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年牵舱,在試婚紗的時候發(fā)現(xiàn)自己被綠了掖肋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡沿盅,死狀恐怖纫溃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情紊浩,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布费彼,位于F島的核電站口芍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鬓椭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一翘瓮、第九天 我趴在偏房一處隱蔽的房頂上張望裤翩。 院中可真熱鬧,春花似錦律姨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凤价。三九已至拔创,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剩燥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工侣滩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留变擒,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓策添,卻偏偏與公主長得像毫缆,于是被迫代替她去往敵國和親唯竹。 傳聞我的和親對象是個殘疾皇子苦丁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容