Java 文件操作 File 及 RandomAccessFile
生活随笔
收集整理的這篇文章主要介紹了
Java 文件操作 File 及 RandomAccessFile
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 File類概述
- 一個代表文件或目錄的類
- 目錄 : 只是將一個字符串標記為一個目錄 ?, 路徑所占的內存空間大小為0。
- 創建
- createNewFile() : 文件不存在時,創建一個文件 , 要求存放這個文件的目錄真實存在 ? ,不能創建目錄。
- mkdri() : 創建目錄?
- mkdris() : 創建多級目錄?
- 刪除
- deleted() : 刪除目錄文件
- 判斷
- isDrictory() : 判斷是否是一個目錄
- isFile () : 判斷是否是一個文件
- canWrite() : 判斷文件是否可寫
- canReade() : 判斷文件是否可讀
- exists() ; 判斷文件是否真實存在
- canExecute() : 判斷文件是否可執行
- isHidden () : 判斷文件是否隱藏
- 獲取
- getName() : ?獲取文件的名字 。 ?底層實現: 獲取路徑中“/"最后一次出現的位置,從這個位置的下一位截取后返回文件名。
- listFiles() : 獲取目錄中所有目錄和文件組成的集合
- getAbsoluteFile() : 獲取這個文件的絕對路徑
- getParent() : 獲取父路徑 ?, 底層實現:?獲取路徑中“/"最后一次出現的位置,從0到這個位置開始截取。
- getPath() : 獲取路徑參數 。 ? 參數傳進去是什么樣子,獲取到就是什么樣子
- lastModifie() : 獲取最后一次修改時間
- list() : 獲取當前目錄下所以文件和目錄組成的數組
- 設置
- setWriteable() : 設置文件權限為可寫 。
- renameTo() : 重命名
- 練習:/**文件練習* 用遞歸的方式刪除一個目錄及目錄下所有的文件* */
public class FileTest_01 {public static void main(String[] args) {//C:\\Users\\user\\Desktop\\雜七雜八-定時清理 - 副本File f = new File("C:\\Users\\user\\Desktop\\雜七雜八-定時清理 - 副本");delFile(f);System.out.println("執行完成");}public static void delFile(File f){//判斷參數是否為空if(f == null){throw new NullPointerException("該路徑為錯誤路徑");} //判斷是否是一個目錄if(f.isDirectory()){File[] listFiles = f.listFiles();for(File ff : listFiles){delFile(ff);}}//刪除當前目錄f.delete();}
}
- 練習:/** 記錄某一種格式文件的個數* * */
public class FileTest_02 {private static int count = 0; public static void main(String[] args) {
// C:\\Users\\user\\Desktop\\雜七雜八-定時清理 - 副本File f = new File("C:\\Users\\user\\Desktop\\筆記 - 副本");getCount(f);System.out.println("該目錄下txt文件的個數為: "+count);}private static void getCount(File f) {//判斷路徑是否為空if(f == null){throw new NullPointerException("該路徑為錯誤路徑");}//判斷是否是一個 目錄if(f.isDirectory()){File[] listFiles = f.listFiles();for(File ff : listFiles){getCount(ff);}}else{//如果是文件 ,判斷文件格式 ,并計數String name = f.getName();if(name.endsWith(".txt")){count++;}} }
}
- 練習:/** 提取一個目錄下所有的某一格式的文件* */ public class FileTest_03 {private static File toFile = new File("C:\\Users\\user\\Desktop\\哈哈"); // private static File toFile1 = new File("C:\\Users\\user\\Desktop\\哈哈2");public static void main(String[] args) {File f = new File("C:\\Users\\user\\Desktop\\筆記 - 副本 (3)");extr(f);System.out.println("執行完畢!");}private static void extr(File f) {//判斷文件是否為空if(f == null){throw new NullPointerException("該路徑為錯誤路徑");}//判斷是否是一個目錄if(f.isDirectory()){File[] listFiles = f.listFiles();for(File ff : listFiles){extr(ff);}}else{//如果不是目錄 則判斷文件類型并挪動if(f.getName().endsWith(".txt")){//獲取文件真正的名字String name = f.getName();int index = name.lastIndexOf(".");String realName = name.substring(0, index);//過濾目標目錄 判斷是否有重名文件FilenameFilter filter = new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return name.matches(realName+"\\d*\\.txt");}};File[] list = toFile.listFiles(filter);System.out.println(list.length);//開始挪動f.renameTo(new File(toFile , realName+(list.length>0?list.length:"")+".txt"));}}} }
- 一個可以對文件進行讀寫的類 ?---- ? ?需要給指定的對象指定對應的權限
- 操作文件時實際上是把這個文件看做一個大型的字節數組 , 默認從第0為開始操作。
- 示例:public class RandomAccessFileDemo1 {public static void main(String[] args) throws Exception {// r --- 讀取// w --- 寫入// d --- 同步更新// 如果文件不存在,則創建該文件// 如果文件已存在,直接操作該文件RandomAccessFile raf = new RandomAccessFile("E:\\a.txt", "rw");// 跳過指定的字節個數raf.seek(7);// 寫出數據raf.write("abc".getBytes());// 將指針歸零raf.seek(0);// 表示讀取一個字節---如果讀取到文件的末尾會返回一個-1// int i = raf.read();// System.out.println(i);// int i = -1;//// while ((i = raf.read()) != -1) {// System.out.println(i);// }// 構建了緩沖區byte[] bs = new byte[8];int len = -1;// read(byte[] bs)---返回值表示讀取到的字節個數while ((len = raf.read(bs)) != -1) {System.out.println(new String(bs, 0, len));}// 當一個RandomAccessFile對象在操作這個文件的時候,不允許別的對象操作raf.close();}}
- 練習:/** 復制文件* */
public class RandomAccessFileTest_01 {public static void main(String[] args) throws IOException {//源文件File of = new File("C:\\Users\\user\\Desktop\\哈哈\\1、Django之url函數.txt");//目標文件File nf = new File("C:\\Users\\user\\Desktop\\暫存\\1.txt");//創建RandomAccessFile對象并指向源文件RandomAccessFile rafo = new RandomAccessFile(of, "rw");//創建RandomAccessFile對象并指向新文件RandomAccessFile rafn = new RandomAccessFile(nf, "rw");//構建緩沖區byte[] bs = new byte[1024*1024*15];int len = -1;//讀取文件while(( len = rafo.read(bs)) != -1){//將讀取到的字節流寫入到目標文件中rafn.write(bs, 0, len);}//關閉流資源rafn.close();rafo.close();System.out.println("復制完畢");}
}
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的Java 文件操作 File 及 RandomAccessFile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java集合(八) 迭代器Iterato
- 下一篇: Java IO流 、 Propertie