Java初級(jí)筆記No.7之Java程序?qū)嵗ㄎ募僮髋c目錄操作)

I、文件操作

1.1 文件寫(xiě)入

使用write()方法向文件寫(xiě)入內(nèi)容:

package example;
import java.io.*;

public class WriteEmp {
    public static void main(String[] args) {
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter("text.txt"));
            out.write("第一次寫(xiě)入");
            out.close();
            System.out.println("successful!");
        } catch (IOException e) {
            
        }
    }
}


在工程目錄中可以看到新建的文件,即寫(xiě)入的內(nèi)容:

1.2 讀取文件內(nèi)容

使用readLine()方法來(lái)讀取文件內(nèi)容:

package example;
import java.io.*;
public class ReadLineEmp {
    public static void main(String[] args) {
        try {
            BufferedReader in = new BufferedReader(new FileReader("text.txt"));
            String str;
            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }
            //System.out.println(str);
        } catch(IOException e) {
            
        }
    }

}

1.3 刪除文件

使用delete()方法將文件刪除

package example;
import java.io.*;
public class DeleteEmp {
    public static void main(String[] args) {
        try {
            File file = new File("c:\\test.txt");
            if (file.delete()) {
                System.out.println(file.getName() + "已被刪除");
            }
            else {
                System.out.println("刪除失敗");
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

1.4 將文件內(nèi)容復(fù)制到另一個(gè)文件

使用BufferedWriter類(lèi)的readwrite方法將文件內(nèi)容復(fù)制到另一個(gè)文件:

package example;
import java.io.*;
public class CopyFileEmp {
    public static void main(String[] args) throws Exception {
        BufferedWriter out1 = new BufferedWriter(new FileWriter("srcfile.txt"));
        out1.write("string to be copied");
        out1.close();
        
        InputStream in = new FileInputStream(new File("srcfile.txt"));
        OutputStream out = new FileOutputStream(new File("destnfile.txt"));
        
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        
        in.close();
        out.close();
        
        BufferedReader in1 = new BufferedReader(new FileReader("destnfile.txt"));
        String str;
        while ((str = in1.readLine()) != null) {
            System.out.println(str);
        }
        in1.close();
        
    }
}

執(zhí)行代碼后,工程目錄中會(huì)達(dá)到預(yù)計(jì)效果:

1.5 向文件中追加數(shù)據(jù)

使用filewriter方法向文件中追加數(shù)據(jù):

package example;
import java.io.*;
public class Append2FileEmp {
    public static void main(String[] args) throws Exception {
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter("text.txt",true));
            out.write("第二次寫(xiě)入\n");
            out.close();
            
            BufferedReader in = new BufferedReader(new FileReader("text.txt"));
            String str;
            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }
            in.close();
        } catch (IOException e) {
            System.out.println("execption occoured" + e);
        }
    }
}

執(zhí)行完畢后,之前的文件內(nèi)容變?yōu)椋?br>

1.6 創(chuàng)建臨時(shí)文件

使用File類(lèi)的createTempFile(String prefix, String suffix)方法在默認(rèn)臨時(shí)目錄來(lái)創(chuàng)建臨時(shí)文件,參數(shù)prefix為前綴,suffix為后綴。

import java.io.*;
public class Main {
    public static void main(String[] args) throws Exception {
        File temp = File.createTempFile("testrunoobtmp", ".txt");
        System.out.println("文件路徑: "+temp.getAbsolutePath());
        temp.deleteOnExit();    //終止后刪除臨時(shí)文件
        BufferedWriter out = new BufferedWriter(new FileWriter(temp));
        out.write("aString");
        System.out.println("臨時(shí)文件已創(chuàng)建:");
        out.close();
    }
}

也可以使用createTempFile(String prefix, String suffix, File directory)中的directory來(lái)指定臨時(shí)文件的目錄:

import java.io.File;
 
public class Main {
 
   public static void main(String[] args) {      
      File f = null;
            
      try {
      
         // 創(chuàng)建臨時(shí)文件
         f = File.createTempFile("tmp", ".txt", new File("C:/"));
         
         // 輸出絕對(duì)路徑
         System.out.println("File path: "+f.getAbsolutePath());
         
         // 終止后刪除臨時(shí)文件
         f.deleteOnExit();
         
         // 創(chuàng)建臨時(shí)文件
         f = File.createTempFile("tmp", null, new File("D:/"));
         
         // 輸出絕對(duì)路徑
         System.out.print("File path: "+f.getAbsolutePath());
         
         // 終止后刪除臨時(shí)文件
         f.deleteOnExit();
         
      } catch(Exception e) {
      
         // 如果有錯(cuò)誤輸出內(nèi)容
         e.printStackTrace();
      }
   }
}
1.7 獲取文件大小

使用File類(lèi)的file.exists()file.length()方法來(lái)獲取文件大小,以字節(jié)計(jì)算:

package example;
import java.io.File;
public class FileSizeEmp {
    public static void main(String[] args) {
        long size = getFileSize("text.txt");
        System.out.println("The size is : " + size + "bytes");
    }
    
    public static long getFileSize(String filename) {
        File file = new File(filename);
        if (!file.exists() || !file.isFile()) {
            System.out.println("文件不存在");
            return -1;
        }
        
        return file.length();
    }
}

1.8 文件重命名

使用File類(lèi)的oldName.renameTo(newName)方法來(lái)重命名文件:

package example;
import java.io.File;
public class RenameFileEmp {
    public static void main(String[] args) {
        File oldName = new File("text.txt");
        File newName = new File("newtext.txt");
        
        if (oldName.renameTo(newName)) {
            System.out.println("successful");
        }
        else {
            System.out.println("Error");
        }
    }
}

1.9 設(shè)置文件只讀

使用File類(lèi)中的file.setReadOnly()file.canWrite()方法來(lái)設(shè)置文件只讀:

import java.io.File;
 
public class Main {
    public static void main(String[] args) {
        File file = new File("C:/java.txt");
        System.out.println(file.setReadOnly());
        System.out.println(file.canWrite());
    }
}
2.0 在指定目錄中創(chuàng)建文件

使用File類(lèi)file.createTempFile()方法在指定目錄中創(chuàng)建文件,不使用deleteOnExit()對(duì)臨時(shí)文件刪除:

import java.io.File;
 
public class Main {
    public static void main(String[] args) throws Exception {
        File file = null;
        File dir = new File("C:/");
        file = File.createTempFile
        ("JavaTemp", ".javatemp", dir);
        System.out.println(file.getPath());
    }
}

II、目錄操作

2.1 使用File類(lèi)的mkdirs()創(chuàng)建目錄
package example;
import java.io.File;
public class MakeDirEmp {
    public static void main(String[] args) {
        String directories = "D:\\a\\b\\c\\d\\e\\f\\g\\h\\i";
        File file = new File(directories);
        boolean result = file.mkdirs();
        System.out.println("Status = " + result);
    }
}

2.2 刪除目錄

使用File類(lèi)的ofdir.isDirectory(),dir.list()deleteDir()方法一個(gè)一個(gè)刪除目錄:

import java.io.File;
 
public class Main {
    public static void main(String[] argv) throws Exception {
        // 刪除當(dāng)前目錄下的 test 目錄
        deleteDir(new File("./test"));
    }
    public static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir
                (new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        if(dir.delete()) {
            System.out.println("目錄已被刪除!");
            return true;
        } else {
            System.out.println("目錄刪除失??!");
            return false;
        }
    }
}
2.3 判斷目錄是否為空

使用File類(lèi)的file.isDirectory()file.list方法判斷目錄是否為空:

import java.io.File;
 
public class Main
{
    public static void main(String[] args)
    {
        File file = new File("./testdir");  // 當(dāng)前目錄下的 testdir目錄
        if(file.isDirectory()){
            if(file.list().length>0){
                System.out.println("目錄不為空!");
            }else{
                System.out.println("目錄為空!");
            }
        }else{
            System.out.println("這不是一個(gè)目錄!");
        }
    }
}
2.4 獲取目錄大小

使用File類(lèi)的FileUtils.sizeofDirectory(File Name)來(lái)獲取目錄大?。?/p>

import java.io.File;
import org.apache.commons.io.FileUtils;
 
public class Main {
    public static void main(String[] args) {
        long size = FileUtils.sizeOfDirectory(new File("C:/test"));
        System.out.println("Size: " + size + " bytes");
    }
}
2.5 在指定目錄中查找文件
import java.io.File;
 
public class Main {
    public static void main(String[] argv) throws Exception {
        File dir = new File("../java");
        String[] children = dir.list();
        if (children == null) {
            System.out.println("該目錄不存在");
        }
        else {
            for (int i = 0; i < children.length; i++) {
                String filename = children[i];
                System.out.println(filename);
            }
        }
    }
}
2.6 獲取文件上級(jí)目錄

使用File類(lèi)的file.getParent()方法獲取文件的上級(jí)目錄:

import java.io.File;
 
public class Main {
    public static void main(String[] args) {
        File file = new File("C:/File/demo.txt");
        String strParentDirectory = file.getParent();
        System.out.println("文件的上級(jí)目錄為 : " + strParentDirectory);
    }
}
2.7 打印目錄結(jié)構(gòu)

使用File類(lèi)的file.getName()file.listFiles()方法來(lái)打印目錄結(jié)構(gòu):

import java.io.File;
import java.io.IOException;
 
public class FileUtil {
    public static void main(String[] a)throws IOException{
        showDir(1, new File("d:\\Java"));
    }
    static void showDir(int indent, File file) throws IOException {
        for (int i = 0; i < indent; i++)
            System.out.print('-');
        System.out.println(file.getName());
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (int i = 0; i < files.length; i++)
                showDir(indent + 4, files[i]);
        }
    }
}
2.8 遍歷指定目錄下的所有目錄

使用Filelist方法來(lái)遍歷指定目錄下的所有目錄:

import java.io.*;
 
class Main {
   public static void main(String[] args) {
      File dir = new File("F:");
      File[] files = dir.listFiles();
      FileFilter fileFilter = new FileFilter() {
         public boolean accept(File file) {
            return file.isDirectory();
         }
      };
      files = dir.listFiles(fileFilter);
      System.out.println(files.length);
      if (files.length == 0) {
         System.out.println("目錄不存在或它不是一個(gè)目錄");
      }
      else {
         for (int i=0; i< files.length; i++) {
            File filename = files[i];
            System.out.println(filename.toString());
         }
      }
   }
}  
2.9 輸出指定目錄下的所有文件

使用File類(lèi)的list方法來(lái)輸出指定目錄下的所有文件:

class Main {
    public static void main(String[] args) {
        File dir = new File("C:");
        String[] children = dir.list();
        if (children == null) {
            System.out.println( "目錄不存在或它不是一個(gè)目錄");
        }
        else {
            for (int i=0; i< children.length; i++) {
                String filename = children[i];
                System.out.println(filename);
            }
        }
    }
}
2.10 在指定目錄中查找字母'b'開(kāi)頭的所有文件:
import java.io.*;
 
class Main {
   public static void main(String[] args) {
      File dir = new File("C:");
      FilenameFilter filter = new FilenameFilter() {
         public boolean accept
         (File dir, String name) {
            return name.startsWith("b");
        }
      };
      String[] children = dir.list(filter);
      if (children == null) {
         System.out.println("目錄不存在或它不是一個(gè)目錄");
      } 
      else {
         for (int i=0; i < children.length; i++) {
            String filename = children[i];
            System.out.println(filename);
         }
      } 
   }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容