File類將
文件
或文件夾
封裝成對象
IO流+Filegit
File file = new File(String path); File file = new File(String dir,String fineName); File file = new File(File dir,String fineName);
public class FileDemo { public static String path = "I:\\Java\\Base\\Thinking\\src\\IOTest\\File.txt"; public static String dirPath = "I:\\Java\\Base\\Thinking\\src\\IOTest\\File"; public static String dirPaths = "I:\\Java\\Base\\Thinking\\src\\IOTest\\a\\b\\c"; public static File file = new File(path); public static File newDir = new File(dirPath); public static File newDirs = new File(dirPaths); public static void main(String[] args) throws Exception { // otherTest();//其餘測試 // createTest();//建立文件 // judgeTest();//判斷File文件 // getInfoTest();//獲取File對象信息 // deleteTest();//刪除文件 }
String path = "I:\\Java\\Base\\Thinking\\src\\IOTest\\File.txt"; File file = new File(path); System.out.println(file);//file.toString()返回文件路徑 //I:\Java\Base\Thinking\src\IOTest\File.txt System.out.println(File.separator);//系統路徑分隔符:\ file.renameTo(new File(file.getParent(), "file.txt"));//重命名到(剪切)
private static void createTest() throws IOException { //返回是否建立成功,若是已經存在,返回false System.out.println("建立文件: " + file.createNewFile());//建立文件: true System.out.println("建立一級文件夾: " + newDir.mkdir());//建立一級文件夾: true System.out.println("建立多級文件夾: " + newDirs.mkdirs());//建立多級文件夾: true }
private static void judgeTest() { System.out.println("文件是否存在" + file.exists());//文件是否存在true System.out.println("文件是否可執行: " + file.canExecute());//文件是否可執行: true System.out.println("文件是否可讀: " + file.canRead());//文件是否可執行: true System.out.println("文件是否可寫: " + file.canWrite());//文件是否可執行: true System.out.println("是不是文件: " + file.isFile());//是不是文件: true System.out.println("是不是文件夾: " + file.isDirectory());//是不是文件夾: false System.out.println("是不是絕對路徑: " + file.isAbsolute());//是不是絕對路徑: true System.out.println("是不是隱藏: " + file.isHidden());//是不是隱藏: false }
private static void getInfoTest() { System.out.println("路徑: " + file.getPath()); //路徑: I:\Java\Base\Thinking\src\IOTest\File.txt System.out.println("絕對路徑: " + file.getAbsolutePath()); //絕對路徑: I:\Java\Base\Thinking\src\IOTest\File.txt System.out.println("文件名: " + file.getName());//文件名: File.txt System.out.println("文件名: " + newDir.getName());//文件名: File System.out.println("父文件夾名: " + file.getParent()); //父文件夾名: I:\Java\Base\Thinking\src\IOTest System.out.println("父文件夾對象: " + file.getParentFile()); //父文件夾對象: I:\Java\Base\Thinking\src\IOTest System.out.println("文件所在盤符總大小: " + file.getTotalSpace() / 1024 / 1024 / 1024 + "G");//50G System.out.println("文件所在盤符剩餘大小: " + file.getUsableSpace() / 1024 / 1024 / 1024 + "G");//20G System.out.println("文件所大小:" + file.length()+"b");//文件所大小:5b String time = new SimpleDateFormat("yyyy/MM/dd a hh:mm:ss ").format(file.lastModified()); System.out.println("最後修改日期: " + time); //最後修改日期: 2018/10/10 下午 01:10:17 }
private static void deleteTest() { System.out.println("刪除文件: " + file.delete());//刪除文件: true file.deleteOnExit();//虛擬機退出時刪除,避免刪除臨時文件前發生異常後刪除不了 }
private static void listFile() { File[] files = File.listRoots();//顯示系統盤符 for (File f : files) { System.out.print(f+" "); //C:\ D:\ E:\ F:\ G:\ H:\ I:\ J:\ K:\ } String[] list = file.getParentFile().list(); for (String s : list) { System.out.println(s); } //a //Activity.md //BufferedWriter.txt //fate.jpg //File //file.txt //FileInputStream.txt //FileWriter.txt //video.avi //《吸血鬼日記》原著英文.txt //鍵盤錄入 //鍵盤錄入-GKB //鍵盤錄入-UTF-8 File[] listFiles = file.getParentFile().listFiles(new FilenameFilter() @Override public boolean accept(File dir, String name) { return name.endsWith(".txt");//過濾掉.txt之外的文件 } }); for (File lf : listFiles) { System.out.println(lf); //I:\Java\Base\Thinking\src\IOTest\BufferedWriter.txt //I:\Java\Base\Thinking\src\IOTest\file.txt //I:\Java\Base\Thinking\src\IOTest\FileInputStream.txt //I:\Java\Base\Thinking\src\IOTest\FileWriter.txt //I:\Java\Base\Thinking\src\IOTest\《吸血鬼日記》原著英文.txt } }
刪除文件夾,若是裏面有內容,從裏往外刪
不能直接刪除有文件的文件夾github
private static void deleteDir(File dir) { for (File file : dir.listFiles()) { if (file.isDirectory()) { deleteDir(file); } else { String name = file.getName(); boolean ok = file.delete(); System.out.println(ok ? "成功刪除--" + name : "刪除失敗--" + name); } } dir.delete(); }
public class OpenDir { public static void main(String[] args) { File file = new File("E:\\UI"); List<File> list = new ArrayList<>(); fileToList(file, list); System.out.println(list.size()); write2File(list, "F:\\list.txt"); } /** * 將某文件夾的圖片文件加入list中 * @param dir 目標文件夾 * @param list 列表 */ private static void fileToList(File dir, List<File> list) { for (File file : dir.listFiles()) { if (file.isDirectory()) { fileToList(file, list); } else { if (file.getName().endsWith(".png")||file.getName().endsWith(".jpg")) { list.add(file); } } } } /** * 將文件列表每項的路徑保存到目標文件 * @param list * @param target */ public static void write2File(List<File> list, String target) { BufferedWriter bfw = null; try { bfw = new BufferedWriter(new FileWriter(target)); for (File file : list) { String path = file.getAbsolutePath(); bfw.write(path); bfw.newLine(); bfw.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (bfw != null) { bfw.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
60000+圖片的路徑保存到了文件中編程
File對象差很少就這些api
HashTable的子類,具備Map的特色,而且鍵值均爲
String
Map與IO結合,可用於鍵值對形式的配置文件,以下面的顏色選擇器微信
既然是繼承自HashTable,基本操做應該不在話下,Map中經常使用put(),get()
爲了語義化,Properties類有setProperty()和getProperty()---固然你也能夠用put(),get()ide
public class PropertiesTest { public static void main(String[] args) { Properties prop = new Properties(); prop.put("TextColor", "red"); prop.put("FontSize", "25sp"); System.out.println(prop);//{FontSize=25sp, TextColor=red} System.out.println(prop.getProperty("TextColor"));//red } }
//獲取鍵的集合 Set<String> keys = prop.stringPropertyNames(); for (String key : keys) { System.out.print(key+":"+prop.getProperty(key)+" "); //FontSize:25sp Family:KaiTi TextColor:red }
//使用map的api遍歷: prop.keySet().iterator().forEachRemaining(key->{ System.out.print(key+":"+prop.get(key)+" "); //FontSize:25sp Family:KaiTi TextColor:red });
沒有Properties
對象:囉嗦一大堆打開顏色選擇器 :讀流I-->字符串分割-->字符串存入Map-->使用Map對象還原用戶配置
修改配置時 :寫流O-->建立Map對象-->字符串拼接-->字符串存入配置文件測試
private static void useHashMapReadConfig() throws IOException { //將配置文件讀入hashMap對象 String configPath = "I:\\Java\\Base\\Thinking\\src\\IOTest\\TxtInfo.ini"; BufferedReader bfr = new BufferedReader(new FileReader(configPath)); HashMap<String, String> hashMap = new HashMap<>(); String line = null; while ((line = bfr.readLine()) != null) { String[] split = line.split("="); hashMap.put(split[0], split[1]); } bfr.close(); System.out.println(hashMap); //{FontSize=25sp, Family=KaiTi, TextColor=red} }
打開顏色選擇器:讀流I-->使用Properties對象還原用戶配置
關閉顏色選擇器:寫流O-->使用Properties對象修改配置文件網站
Properties prop = new Properties(); prop.load(new FileInputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\TxtInfo.ini")); System.out.println(prop);//{FontSize=25sp, Family=KaiTi, TextColor=red}
prop.list(System.out); //-- listing properties -- //FontSize=25sp //Family=KaiTi //TextColor=red
prop.setProperty("TextColor", "blue"); //修改後須要用store保存到文件中,不然修改無效 prop.store(new FileOutputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\TxtInfo.ini"),"toly--mod");
項目源碼 | 日期 | 備註 |
---|---|---|
V0.1--無 | 2018-10-11 | Java總結IO篇之File類和Properties類 |
V0.2--無 | - | - |
筆名 | 微信 | 愛好 | |
---|---|---|---|
張風捷特烈 | 1981462002 | zdl1994328 | 語言 |
個人github | 個人簡書 | 個人CSDN | 我的網站 |
1----本文由張風捷特烈原創,轉載請註明
2----歡迎廣大編程愛好者共同交流
3----我的能力有限,若有不正之處歡迎你們批評指證,一定虛心改正
4----看到這裏,我在此感謝你的喜歡與支持.net