*
* 我們要想實作IO的操作,就必須知道硬碟上檔案的表現形式,
* 而Java就提供了一個類File供我們使用,
*
* File:檔案和目錄(檔案夾)路徑名的抽象表示形式
* 構造方法:
* File(String pathname):根據一個路徑得到File物件
* File(String parent, String child):根據一個目錄和一個子檔案/目錄得到File物件
* File(File parent, String child):根據一個父File物件和一個子檔案/目錄得到File物件
package cn.itcast_01; import java.io.File; /* * 我們要想實作IO的操作,就必須知道硬碟上檔案的表現形式, * 而Java就提供了一個類File供我們使用, * * File:檔案和目錄(檔案夾)路徑名的抽象表示形式 * 構造方法: * File(String pathname):根據一個路徑得到File物件 * File(String parent, String child):根據一個目錄和一個子檔案/目錄得到File物件 * File(File parent, String child):根據一個父File物件和一個子檔案/目錄得到File物件 */ public class FileDemo { public static void main(String[] args) { // File(String pathname):根據一個路徑得到File物件 // 把e:\\demo\\a.txt封裝成一個File物件 File file = new File("E:\\demo\\a.txt"); // File(String parent, String child):根據一個目錄和一個子檔案/目錄得到File物件 File file2 = new File("E:\\demo", "a.txt"); // File(File parent, String child):根據一個父File物件和一個子檔案/目錄得到File物件 File file3 = new File("e:\\demo"); File file4 = new File(file3, "a.txt"); // 以上三種方式其實效果一樣 } }
File--創建功能
/*
*創建功能:
*public boolean createNewFile():創建檔案 如果存在這樣的檔案,就不創建了
*public boolean mkdir():創建檔案夾 如果存在這樣的檔案夾,就不創建了
*public boolean mkdirs():創建檔案夾,如果父檔案夾不存在,會幫你創建出來
*
*騎白馬的不一定是王子,可能是班長,
*注意:你到底要創建檔案還是檔案夾,你最清楚,方法不要調錯了,
*/
package cn.itcast_02; import java.io.File; import java.io.IOException; /* *創建功能: *public boolean createNewFile():創建檔案 如果存在這樣的檔案,就不創建了 *public boolean mkdir():創建檔案夾 如果存在這樣的檔案夾,就不創建了 *public boolean mkdirs():創建檔案夾,如果父檔案夾不存在,會幫你創建出來 * *騎白馬的不一定是王子,可能是班長, *注意:你到底要創建檔案還是檔案夾,你最清楚,方法不要調錯了, */ public class FileDemo { public static void main(String[] args) throws IOException { // 需求:我要在e盤目錄下創建一個檔案夾demo File file = new File("e:\\demo"); System.out.println("mkdir:" + file.mkdir()); // 需求:我要在e盤目錄demo下創建一個檔案a.txt File file2 = new File("e:\\demo\\a.txt"); System.out.println("createNewFile:" + file2.createNewFile()); // 需求:我要在e盤目錄test下創建一個檔案b.txt // Exception in thread "main" java.io.IOException: 系統找不到指定的路徑, // 注意:要想在某個目錄下創建內容,該目錄首先必須存在, // File file3 = new File("e:\\test\\b.txt"); // System.out.println("createNewFile:" + file3.createNewFile()); // 需求:我要在e盤目錄test下創建aaa目錄 // File file4 = new File("e:\\test\\aaa"); // System.out.println("mkdir:" + file4.mkdir()); // File file5 = new File("e:\\test"); // File file6 = new File("e:\\test\\aaa"); // System.out.println("mkdir:" + file5.mkdir()); // System.out.println("mkdir:" + file6.mkdir()); // 其實我們有更簡單的方法 File file7 = new File("e:\\aaa\\bbb\\ccc\\ddd"); System.out.println("mkdirs:" + file7.mkdirs()); // 看下面的這個東西: File file8 = new File("e:\\liuyi\\a.txt"); System.out.println("mkdirs:" + file8.mkdirs()); } }
File類--洗掉功能
package cn.itcast_03; import java.io.File; import java.io.IOException; /* * 洗掉功能:public boolean delete() * * 注意: * A:如果你創建檔案或者檔案夾忘了寫盤符路徑,那么,默認在專案路徑下, * B:Java中的洗掉不走回收站, * C:要洗掉一個檔案夾,請注意該檔案夾內不能包含檔案或者檔案夾 */ public class FileDemo { public static void main(String[] args) throws IOException { // 創建檔案 // File file = new File("e:\\a.txt"); // System.out.println("createNewFile:" + file.createNewFile()); // 我不小心寫成這個樣子了 File file = new File("a.txt"); System.out.println("createNewFile:" + file.createNewFile()); // 繼續玩幾個 File file2 = new File("aaa\\bbb\\ccc"); System.out.println("mkdirs:" + file2.mkdirs()); // 洗掉功能:我要洗掉a.txt這個檔案 File file3 = new File("a.txt"); System.out.println("delete:" + file3.delete()); // 洗掉功能:我要洗掉ccc這個檔案夾 File file4 = new File("aaa\\bbb\\ccc"); System.out.println("delete:" + file4.delete()); // 洗掉功能:我要洗掉aaa檔案夾 // File file5 = new File("aaa"); // System.out.println("delete:" + file5.delete()); File file6 = new File("aaa\\bbb"); File file7 = new File("aaa"); System.out.println("delete:" + file6.delete()); System.out.println("delete:" + file7.delete()); }
File類---重命名功能
* 重命名功能:public boolean renameTo(File dest)
* 如果路徑名相同,就是改名,
* 如果路徑名不同,就是改名并剪切,
*
* 路徑以盤符開始:絕對路徑 c:\\a.txt
* 路徑不以盤符開始:相對路徑 a.txt
*/
package cn.itcast_04; import java.io.File; /* * 重命名功能:public boolean renameTo(File dest) * 如果路徑名相同,就是改名, * 如果路徑名不同,就是改名并剪切, * * 路徑以盤符開始:絕對路徑 c:\\a.txt * 路徑不以盤符開始:相對路徑 a.txt */ public class FileDemo { public static void main(String[] args) { // 創建一個檔案物件 // File file = new File("林青霞.jpg"); // // 需求:我要修改這個檔案的名稱為"東方不敗.jpg" // File newFile = new File("東方不敗.jpg"); // System.out.println("renameTo:" + file.renameTo(newFile)); File file2 = new File("東方不敗.jpg"); File newFile2 = new File("e:\\林青霞.jpg"); System.out.println("renameTo:" + file2.renameTo(newFile2)); } }
File類----判斷功能
/*
* 判斷功能:
* public boolean isDirectory():判斷是否是目錄
* public boolean isFile():判斷是否是檔案
* public boolean exists():判斷是否存在
* public boolean canRead():判斷是否可讀
* public boolean canWrite():判斷是否可寫
* public boolean isHidden():判斷是否隱藏
*/
/* * 判斷功能: * public boolean isDirectory():判斷是否是目錄 * public boolean isFile():判斷是否是檔案 * public boolean exists():判斷是否存在 * public boolean canRead():判斷是否可讀 * public boolean canWrite():判斷是否可寫 * public boolean isHidden():判斷是否隱藏 */ public class FileDemo { public static void main(String[] args) { // 創建檔案物件 File file = new File("a.txt"); System.out.println("isDirectory:" + file.isDirectory());// false System.out.println("isFile:" + file.isFile());// true System.out.println("exists:" + file.exists());// true System.out.println("canRead:" + file.canRead());// true System.out.println("canWrite:" + file.canWrite());// true System.out.println("isHidden:" + file.isHidden());// false } }
File類---獲取功能
*
* 獲取功能:
* public String getAbsolutePath():獲取絕對路徑
* public String getPath():獲取相對路徑
* public String getName():獲取檔案或者檔案夾的名稱
* public long length():獲取長度,位元組數
* public long lastModified():獲取最后一次的修改時間,毫秒值
*/
package cn.itcast_06; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; /* * 獲取功能: * public String getAbsolutePath():獲取絕對路徑 * public String getPath():獲取相對路徑 * public String getName():獲取名稱 * public long length():獲取長度,位元組數 * public long lastModified():獲取最后一次的修改時間,毫秒值 */ public class FileDemo { public static void main(String[] args) { // 創建檔案物件 File file = new File("demo\\test.txt"); System.out.println("getAbsolutePath:" + file.getAbsolutePath()); System.out.println("getPath:" + file.getPath()); System.out.println("getName:" + file.getName()); System.out.println("length:" + file.length()); System.out.println("lastModified:" + file.lastModified()); // 1416471971031 Date d = new Date(1416471971031L); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String s = sdf.format(d); System.out.println(s); } }
File類---高級獲取
*
* 獲取功能:
* public String[] list():獲取指定目錄下的所有檔案或者檔案夾的名稱陣列
* public File[] listFiles():獲取指定目錄下的所有檔案或者檔案夾的File陣列
*/
package cn.itcast_07; import java.io.File; /* * 獲取功能: * public String[] list():獲取指定目錄下的所有檔案或者檔案夾的名稱陣列 * public File[] listFiles():獲取指定目錄下的所有檔案或者檔案夾的File陣列 */ public class FileDemo { public static void main(String[] args) { // 指定一個目錄 File file = new File("e:\\"); // public String[] list():獲取指定目錄下的所有檔案或者檔案夾的名稱陣列 String[] strArray = file.list(); for (String s : strArray) { System.out.println(s); } System.out.println("------------"); // public File[] listFiles():獲取指定目錄下的所有檔案或者檔案夾的File陣列 File[] fileArray = file.listFiles(); for (File f : fileArray) { System.out.println(f.getName()); } } }
File練習案例一(獲取指定后綴名的檔案)
package Day19; import java.io.File; /* * 判斷E盤目錄下是否有后綴名為.jpg的檔案,如果有,就輸出此檔案名稱 *分析: * A:封裝e判斷目錄 * B:獲取該目錄下所有檔案或者檔案夾的File陣列 * C:遍歷該File陣列,得到每一個File物件,然后判斷 * D:是否是檔案 * 是:繼續判斷是否以.jpg結尾 * 是:就輸出該檔案名稱 * 否:不搭理它 * 否:不搭理它 */ public class FileDemo1 { public static void main(String[] args) { //創建File檔案物件給出路徑 File file = new File("D:\\"); //獲取整個D盤的檔案和檔案夾 File [] files = file.listFiles(); //遍歷獲取的檔案和檔案夾的檔案陣列 for(File e: files){ //對遍歷的檔案或者檔案夾進行判斷--是否是檔案 if(e.isFile()){ //對獲取的檔案進行后綴名的判斷 //public boolean endsWith(String suffix)測驗此字串是否以指定的后綴結束, //* public String getName():獲取檔案或者檔案夾的名稱 if(e.getName().endsWith(".txt")){ System.out.println(e.getName()); } } } } }
File練習案例一(獲取指定后綴名的檔案--方式二【檔案名稱過濾器】)
package cn.itcast_08; import java.io.File; import java.io.FilenameFilter; /* * 判斷E盤目錄下是否有后綴名為.jpg的檔案,如果有,就輸出此檔案名稱 * A:先獲取所有的,然后遍歷的時候,依次判斷,如果滿足條件就輸出, * B:獲取的時候就已經是滿足條件的了,然后輸出即可, * * 要想實作這個效果,就必須學習一個介面:檔案名稱過濾器 * public String[] list(FilenameFilter filter) * public File[] listFiles(FilenameFilter filter) */ public class FileDemo2 { public static void main(String[] args) { // 封裝e判斷目錄 File file = new File("e:\\"); // 獲取該目錄下所有檔案或者檔案夾的String陣列 // public String[] list(FilenameFilter filter) String[] strArray = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { // return false; // return true; // 通過這個測驗,我們就知道了,到底把這個檔案或者檔案夾的名稱加不加到陣列中,取決于這里的回傳值是true還是false // 所以,這個的true或者false應該是我們通過某種判斷得到的 // System.out.println(dir + "---" + name); // File file = new File(dir, name); // // System.out.println(file); // boolean flag = file.isFile(); // boolean flag2 = name.endsWith(".jpg"); // return flag && flag2; return new File(dir, name).isFile() && name.endsWith(".jpg"); } }); // 遍歷 for (String s : strArray) { System.out.println(s); } } }
File類-----批量修改檔案名稱案例
package Day19; import java.io.File; /* * /* * 需求:把E:\評書\三國演義下面的視頻名稱修改為 * 00?_介紹.avi * * 思路: * A:封裝目錄 * B:獲取該目錄下所有的檔案的File陣列 * C:遍歷該File陣列,得到每一個File物件 * D:拼接一個新的名稱,然后重命名即可, */ public class FileDemo3 { public static void main(String[] args) { //封裝目錄 File file = new File("D:\\評書"); //獲取該目錄下的所有檔案File陣列 File [] file1 = file.listFiles(); //遍歷該File陣列,得到每一個File物件 for(File file2 : file1){ //獲取每一個File物件的檔案名 //三國演義_001_[評書網-今天很高興,明天就IO了]_赤壁之戰.txt String Filename = file2.getName(); //00?_介紹.avi---進行字符的拼接 //首先截取出001---004的編號 //public int indexOf(String str,int fromIndex)回傳指定子字串在此字串中第一次出現處的索引,從指定的索引開始, int index = Filename.indexOf("_",0); //public String substring(int beginIndex,int endIndex)回傳一個新字串,它是此字串的一個子字串, // 該子字串從指定的 beginIndex 處開始,直到索引 endIndex - 1 處的字符 ----包左不包右 String indexNumber = Filename.substring(index+1,index+4); System.out.println(indexNumber); //截取_赤壁之戰,txt //public int lastIndexOf(int ch)回傳指定字符在此字串中最后一次出現處的索引 int index1 = Filename.lastIndexOf("_"); //public String substring(int beginIndex,int endIndex)回傳一個新字串,它是此字串的一個子字串, // 該子字串從指定的 beginIndex 處開始,直到索引 endIndex - 1 處的字符 ----包左不包右 String indexnumber1 = Filename.substring(index1); System.out.println(indexnumber1); //截取完畢進行牌拼接 //public String concat(String str)將指定字串連接到此字串的結尾, String number = indexNumber.concat(indexnumber1); //創建一個新的File物件 // File(File parent, String child):根據一個父File物件和一個子檔案/目錄得到File物件 File filename1 = new File(file,number); //進行對檔案的改名 // 重命名功能:public boolean renameTo(File dest)---實作對檔案的重命名 //* 如果路徑名相同,就是改名,---將遍歷的每個檔案物件---進行依次的改名 file2.renameTo(filename1); } } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/452818.html
標籤:Java
上一篇:Java 將CSV轉為Excel
