File類 -《學堂線上》

孤鼠發表於2020-08-30

File類的作用

·建立、刪除檔案;

·重新命名檔案;判斷檔案的讀寫許可權及是否存在;

·設定和查詢檔案的最近修改時間等;

·構造檔案流可以使用File類的物件作為引數。

 

//: FileTester.java

package com.xuetang.four;

import java.io.File;

/**
 * @author WuRoc
 * @GitHub www.github.com/WuRoc
 * @version 1.0
 * @2020年8月30日
 * import static com.wuroc.util.Print.*;
 * 
 */
public class FileTester {
    public static void main(String[] args) {
        File f = new File("Hello.txt");
        if (f.exists()) 
            f.delete();
        else
            try {
                f.createNewFile();
            }
        catch(Exception e) {
            System.out.println(e.getMessage());
        }
        
    }

}

 

執行結果

因為在前面的例子中已經建立了Hello.txt,所以第一次執行將刪除這個檔案第二次執行則又建立了一個此名的空檔案

分析

在試圖開啟檔案之前,可以使用File類的isFile方法來確定File物件是否代表一個檔案而非目錄)還可通過exists方法判斷同名檔案或路徑是否存在,進而採取正確的方法,以免造成誤操作

複製檔案改進

//: NewCopyBytes.java

package com.xuetang.four;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author WuRoc
 * @GitHub www.github.com/WuRoc
 * @version 1.0
 * @2020年8月30日
 * import static com.wuroc.util.Print.*;
 * 
 */
public class NewCopyBytes {
    public static void main(String[] args) {
        DataInputStream instr;
        DataOutputStream outstr;
        if (args.length != 2) {
            System.out.println("Please Enter file name");
            return;
        }
        File inFile = new File(args[0]);
        File outFile = new File(args[1]);
        if (outFile.exists()) {   //複製的檔案是否存在
            System.out.println(args[1] + " already exists");
            return;
        }
        
        if(!inFile.exists()) {  //複製原始檔是否存在
            System.out.println(args[0] + "does.not.exist");
        
        return;
        }
        
        try {
            instr = new DataInputStream(new BufferedInputStream(new FileInputStream(inFile)));
            outstr = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(outFile)));
            
        
        try {
            int data;
            while(true ) {
                data = instr.readUnsignedByte();  //每次讀一個位元組
                outstr.writeByte(data);     
            }
        }
        
            catch(EOFException eof) {
                outstr.close();
                instr.close();
                return;
        
        }
        }
        catch(FileNotFoundException nfx) {
            System.out.println("Problem opening files");
        }
        
        catch(IOException iox) {
            System.out.println("IO Problem");
        }
    }

}

 

相關文章