摘要:技術概述技術概述把內存中的數據存儲到持久化設備上這個動作稱為輸出寫操作把持久設備上的數據讀取到內存中的這個動作稱為輸入讀操作操作把上面的這種輸入和輸出動作稱為操作類的概述和作用類的概述和作用的概念類是文件和目錄路徑名的抽象表示形式中把文件或
01IO技術概述.avi(02:49)
* A:IO技術概述 * a: Output * 把內存中的數據存儲到持久化設備上這個動作稱為輸出(寫)Output操作 * b: Input * 把持久設備上的數據讀取到內存中的這個動作稱為輸入(讀)Input操作 * c: IO操作 * 把上面的這種輸入和輸出動作稱為IO操作02File類的概述和作用
* A:File類的概述和作用 * a: File的概念 * File類是文件和目錄路徑名的抽象表示形式 * Java中把文件或者目錄(文件夾)都封裝成File對象 * 我們要去操作硬盤上的文件,或者文件夾只要找到File這個類即可03File類靜態的成員變量
* A:File類靜態的成員變量 * a: pathSeparator * 與系統有關的路徑分隔符,為了方便,它被表示為一個字符串 * b: separator * 與系統有關的默認名稱分隔符,為了方便,它被表示為一個字符串 * c: 案例代碼 /* * java.io.File * 將操作系統中的,文件,目錄(文件夾),路徑,封裝成File對象 * 提供方法,操作系統中的內容 * File與系統無關的類 * 文件 file * 目錄 directory * 路徑 path */ public class FileDemo { public static void main(String[] args) { //File類靜態成員變量 //與系統有關的路徑分隔符 String separator = File.pathSeparator; System.out.println(separator);// 是一個分號,目錄的分割(window中環境變量配置各個路徑用分號分割,表示一個完整的路徑結束) Linux中是冒號 : //與系統有關的默認名稱分隔符 separator = File.separator; System.out.println(separator);// 向右 目錄名稱分割 Linux / } }04File類構造方法_1
* A: File類構造方法_1 * a: File(String pathname) * 通過將給定路徑名字符串轉換為一個File對象,之后可以使用File中的方法 * windows中的路徑或文件名不區分大小寫 * d: 案例代碼 public class FileDemo1 { public static void main(String[] args) { function(); } /* * File(String pathname) * 傳遞路徑名: 可以寫到文件夾,可以寫到一個文件 * c:abc c:abcDemo.java * 將路徑封裝File類型對象 */ public static void function(){ File file = new File("d:eclipse"); System.out.println(file); } }05相對路徑和絕對路徑
* A: 相對路徑和絕對路徑 * a: 絕對路徑 * 絕對路徑是一個固定的路徑,從盤符開始 * b: 相對路徑 * 相對路徑相對于某個位置,在eclipse下是指當前項目下 * c: 路徑 絕對路徑 在系統中具有唯一性 c:windowssystem32 相對路徑 表示路徑之間的關系 D:developJavajdk1.7.0_72in D:developJavajre7 路徑之間關系 Java 父目錄是D:develop Java 子目錄是:jdk1.7.0_72 父路徑是 唯一性 子目錄是可以多個06File類的構造方法_2
* A: File類的構造方法_2 * a:File(String parent, String child) * 根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 對象 * b: File(File parent, String child) * c: 案例代碼 public class FileDemo1 { public static void main(String[] args) { function_2(); } /* * File(File parent,String child) * 傳遞路徑,傳遞File類型父路徑,字符串子路徑 * 好處: 父路徑是File類型,父路徑可以直接調用File類方法 */ public static void function_2(){ File parent = new File("d:"); File file = new File(parent,"eclipse"); System.out.println(file); } /* * File(String parent,String child) * 傳遞路徑,傳遞字符串父路徑,字符串子路徑 * 好處: 多帶帶操作父路徑和子路徑 */ public static void function_1(){ File file = new File("d:","eclipse"); System.out.println(file); } }07File類創建文件功能
* A: File類創建文件功能 * a: public boolean createNewFile() * 創建文件 如果存在這樣的文件,就不創建了 * b: 案例代碼 public class FileDemo2 { public static void main(String[] args)throws IOException { function(); } /* * File創建文件的功能 * boolean createNewFile() * 創建的文件路徑和文件名,在File構造方法中給出 * 文件已經存在了,不在創建 */ public static void function()throws IOException{ File file = new File("c:a.txt"); boolean b = file.createNewFile(); System.out.println(b); } }08File類創建目錄功能
* A: File類創建目錄功能 * a: 創建目錄 * public boolean mkdir():創建文件夾 如果存在這樣的文件夾,就不創建了 * public boolean mkdirs():創建文件夾,如果父文件夾不存在,會幫你創建出來 * b: 案例代碼 public class FileDemo2 { public static void main(String[] args)throws IOException { function_1(); } /* * File創建文件夾功能 * boolean mkdirs() 創建多層文件夾 * 創建的路徑也在File構造方法中給出 * 文件夾已經存在了,不在創建 */ public static void function_1(){ File file = new File("c:abc"); boolean b = file.mkdirs(); System.out.println(b); } }09File類刪除功能
* A: File類刪除功能 * a: 刪除功能 * public boolean delete():刪除文件或者文件夾 * B: 案例代碼 public class FileDemo2 { public static void main(String[] args)throws IOException { function_2(); } /* * File類的刪除功能 * boolean delete() * 刪除的文件或者是文件夾,在File構造方法中給出 * 刪除成功返回true,刪除失敗返回false * 刪除方法,不走回收站,直接從硬盤中刪除 * 刪除有風險,運行需謹慎 */ public static void function_2(){ File file = new File("c:a.txt"); boolean b = file.delete(); System.out.println(b); } }10File類獲取功能
* A:File類獲取功能 * a: 方法介紹 * String getName(): 返回路徑中表示的文件或者文件夾名 * 獲取路徑中的最后部分的名字 * long length(): 返回路徑中表示的文件的字節數 * String getAbsolutePath(): 獲取絕對路徑,返回String對象 * File getAbsoluteFile() : 獲取絕對路徑,返回File對象 * eclipse環境中,寫一個相對路徑,絕對位置工程根目錄 * String getParent(): 獲取父路徑,返回String對象 * File getParentFile(): 獲取父路徑,返回File對象 * b: 案例代碼 public class FileDemo3 { public static void main(String[] args) { function_3(); } /* * File類的獲取功能 * String getParent() 返回String對象 * File getParentFile()返回File對象 * 獲取父路徑 */ public static void function_3(){ File file = new File("d:eclipseeclipse.exe"); File parent = file.getParentFile(); System.out.println(parent); } /* * File類獲取功能 * String getAbsolutePath() 返回String對象 * File getAbsoluteFile() 返回File對象 * 獲取絕對路徑 * eclipse環境中,寫的是一個相對路徑,絕對位置工程根目錄 */ public static void function_2(){ File file = new File("src"); File absolute = file.getAbsoluteFile(); System.out.println(absolute); } /* * File類獲取功能 * long length() * 返回路徑中表示的文件的字節數 */ public static void function_1(){ File file = new File("d:eclipseeclipse.exe"); long length = file.length(); System.out.println(length); } /* * File類的獲取功能 * String getName() * 返回路徑中表示的文件或者文件夾名 * 獲取路徑中的最后部分的名字 */ public static void function(){ File file = new File("d:eclipseeclipse.exe"); String name = file.getName(); System.out.println(name); /*String path = file.getPath(); System.out.println(path);*/ // System.out.println(file); } }11File類判斷功能
* A: File類判斷功能 * a: 方法介紹 * boolean exists(): 判斷File構造方法中封裝路徑是否存在 * 存在返回true,不存在返回false * boolean isDirectory(): 判斷File構造方法中封裝的路徑是不是文件夾 * 如果是文件夾,返回true,不是文件返回false * boolean isFile(): 判斷File構造方法中封裝的路徑是不是文件 * 如果是文件,返回true,不是文件返回false * b: 案例代碼 public class FileDemo4 { public static void main(String[] args) { function_1(); } /* * File判斷功能 * boolean isDirectory() * 判斷File構造方法中封裝的路徑是不是文件夾 * 如果是文件夾,返回true,不是文件返回false * * boolean isFile() * 判斷File構造方法中封裝的路徑是不是文件 */ public static void function_1(){ File file = new File("d:eclipseeclipse.exe"); if(file.exists()){ boolean b = file.isDirectory(); System.out.println(b); } } /* * File判斷功能 * boolean exists() * 判斷File構造方法中封裝路徑是否存在 * 存在返回true,不存在返回false */ public static void function(){ File file = new File("src"); boolean b = file.exists(); System.out.println(b); } }12File類list獲取功能
* A: File類list獲取功能 * a: 方法介紹 * String[] list():獲取到File構造方法中封裝的路徑中的文件和文件夾名 (遍歷一個目錄) * 返回只有名字 * File[] listFiles():獲取到,File構造方法中封裝的路徑中的文件和文件夾名 (遍歷一個目錄) * 返回的是目錄或者文件的全路徑 * static File[] listRoots(): 列出可用的文件系統根 * b: 案例代碼 public class FileDemo { public static void main(String[] args) { function_2(); } public static void function_2(){ //獲取系統中的所有根目錄 File[] fileArr = File.listRoots(); for(File f : fileArr){ System.out.println(f); } } /* * File類的獲取功能 * File[] listFiles() * 獲取到,File構造方法中封裝的路徑中的文件和文件夾名 (遍歷一個目錄) * 返回的是目錄或者文件的全路徑 */ public static void function_1(){ File file = new File("d:eclipse"); File[] fileArr = file.listFiles(); for(File f : fileArr){ System.out.println(f); } } /* * File類的獲取功能 * String[] list() * 獲取到,File構造方法中封裝的路徑中的文件和文件夾名 (遍歷一個目錄) * 返回只有名字 */ public static void function(){ File file = new File("c:"); String[] strArr = file.list(); System.out.println(strArr.length); for(String str : strArr){ System.out.println(str); } } }13文件過濾器
* A: 文件過濾器 * a: 作用 * 過濾一個目錄下的指定擴展名的文件,或者包含某些關鍵字的文件夾 * b: 方法介紹 * public String[] list(FilenameFilter filter) * public File[] listFiles(FileFilter filter) * C: 案例代碼 /* * 自定義過濾器 * 實現FileFilter接口,重寫抽象方法 */ public class MyFilter implements FileFilter{ public boolean accept(File pathname) { /* * pathname 接受到的也是文件的全路徑 * c:demo1.txt * 對路徑進行判斷,如果是java文件,返回true,不是java文件,返回false * 文件的后綴結尾是.java */ //String name = pathname.getName(); return pathname.getName().endsWith(".java"); } } /* * File類的獲取,文件獲取過濾器 * 遍歷目錄的時候,可以根據需要,只獲取滿足條件的文件 * 遍歷目錄方法 listFiles()重載形式 * listFiles(FileFilter filter)接口類型 * 傳遞FileFilter接口的實現類 * 自定義FileFilter接口實現類,重寫抽象方法, * 接口實現類對象傳遞到遍歷方法listFiles */ public class FileDemo1 { public static void main(String[] args) { File file = new File("c:demo"); File[] fileArr = file.listFiles(new MyFilter()); for(File f : fileArr){ System.out.println(f); } } }14文件過濾器_原理分析
* A:文件過濾器_原理分析 * listFiles()遍歷目錄的同時,獲取到了文件名全路徑,調用過濾器的方法accept,將獲取到的路徑傳遞給accept方法的參數pathname * accept方法接收了參數pathname,參數是listFiles傳遞來的 * 在accept方法中,進行判斷,如果這個路徑是Java文件,返回true,走著返回false * 一旦方法返回了true * listFiles將路徑保存到File數組中15遞歸遍歷全目錄
* A: 遞歸遍歷全目錄 * a: 案例代碼 /* * 對一個目錄的下的所有內容,進行完全的遍歷 * 編程技巧,方法的遞歸調用,自己調用自己 */ public class FileDemo { public static void main(String[] args) { File dir = new File("d:eclipse"); getAllDir(dir); } /* * 定義方法,實現目錄的全遍歷 */ public static void getAllDir(File dir){ System.out.println(dir); //調用方法listFiles()對目錄,dir進行遍歷 File[] fileArr = dir.listFiles(); for(File f : fileArr){ //判斷變量f表示的路徑是不是文件夾 if(f.isDirectory()){ //是一個目錄,就要去遍歷這個目錄 //本方法,getAllDir,就是給個目錄去遍歷 //繼續調用getAllDir,傳遞他目錄 getAllDir(f); }else{ System.out.println(f); } } } }16遞歸概念和注意事項
* A:遞歸概念和注意事項 * a: 遞歸概念 * 遞歸,指在當前方法內調用自己的這種現象 * 遞歸分為兩種,直接遞歸和間接遞歸 * 直接遞歸稱為方法自身調用自己。間接遞歸可以A方法調用B方法,B方法調用C方法,C方法調用A方法 * b: 注意事項 * 遞歸一定要有出口, 必須可以讓程序停下 * 遞歸次數不能過多 * 構造方法,禁止遞歸17遞歸求和計算
* A: 遞歸求和計算 * a: 題目分析 * 1+2+3+...+(n-1)+n:求1到n的和 * 總結規律:1到n的和等于1到(n-1)的和再加n * getSum(n-1)+ n * 遞歸出口:getSum(1) return 1; * b: 案例代碼 /* * 方法的遞歸調用 * 方法自己調用自己 * 適合于,方法中運算的主體不變,但是運行的時候,參與運行的方法參數會變化 * 注意: * 遞歸一定要有出口, 必須可以讓程序停下 * 遞歸次數不能過多 * 構造方法,禁止遞歸 */ public class DiGuiDemo { public static void main(String[] args) { int sum = getSum(3); System.out.println(sum); } /* * 計算 1+2+3+100和 = 5050 * 計算規律: * n+(n-1)+(n-2) * 100+(100-1)+(99-1)+...1 */ public static int getSum(int n){ if( n == 1) return 1; return n + getSum(n-1); } }18遞歸求階乘
* A: 遞歸求和計算 * a: 題目分析 * 5!=5*4*3*2*1 * =5*4! * 4!=4*3! * 3!=3*2! * 2!=2*1! * 1!=1 * n!=n*(n-1)! * 遞歸出口:n*getJieCheng(n-1): getJieCheng(1) return 1; * b: 案例代碼 /* * 方法的遞歸調用 * 方法自己調用自己 * 適合于,方法中運算的主體不變,但是運行的時候,參與運行的方法參數會變化 * 注意: * 遞歸一定要有出口, 必須可以讓程序停下 * 遞歸次數不能過多 * 構造方法,禁止遞歸 */ public class DiGuiDemo { public static void main(String[] args) { System.out.println(getJieCheng(5)); } /* * 計算階乘 5! * 5*4*3*2*1 */ public static int getJieCheng(int n){ if ( n == 1) return 1; return n * getJieCheng(n-1); } }19遞歸計算斐波那契數列
* A: 遞歸計算斐波那契數列 * a:題目分析 * 1 1 2 3 5 8 13 21 * 從第三項開始,后面的每一項都等于前面兩項的和,第一項和第二項的值為1,作為程序的出口 * b: 案例代碼 /* * 方法的遞歸調用 * 方法自己調用自己 * 適合于,方法中運算的主體不變,但是運行的時候,參與運行的方法參數會變化 * 注意: * 遞歸一定要有出口, 必須可以讓程序停下 * 遞歸次數不能過多 * 構造方法,禁止遞歸 */ public class DiGuiDemo { public static void main(String[] args) { System.out.println(getFBNQ(12)); } /* * 方法遞歸,計算斐波那契數列 * */ public static int getFBNQ(int month){ if( month == 1) return 1; if( month == 2) return 1; return getFBNQ(month-1)+getFBNQ(month-2); } }20遍歷目錄下的所有java文件
* A: 遍歷目錄下的所有java文件 * a: 案例代碼 public class MyJavaFilter implements FileFilter { public boolean accept(File pathname) { //判斷獲取的是目錄,直接返回true if(pathname.isDirectory()) return true; return pathname.getName().toLowerCase().endsWith(".java"); } } /* * 遍歷目錄,獲取目錄下的所有.java文件 * 遍歷多級目錄,方法遞歸實現 * 遍歷的過程中,使用過濾器 */ public class FileDemo1 { public static void main(String[] args) { getAllJava(new File("c:demo")); // new File("c:demo").delete(); } /* * 定義方法,實現遍歷指定目錄 * 獲取目錄中所有的.java文件 */ public static void getAllJava(File dir){ //調用File對象方法listFiles()獲取,加入過濾器 File[] fileArr = dir.listFiles(new MyJavaFilter()); for(File f : fileArr){ //對f路徑,判斷是不是文件夾 if(f.isDirectory()){ //遞歸進入文件夾遍歷 getAllJava(f); }else{ System.out.println(f); } } } }21總結
* 把今天的知識點總結一遍。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67162.html
摘要:但是對象表示目錄,則返回值未指定。遞歸的分類遞歸分為兩種,直接遞歸和間接遞歸。直接遞歸稱為方法自身調用自己。注意事項遞歸一定要有條件限定,保證遞歸能夠停止下來,否則會發生棧內存溢出。遞歸求階乘階乘所有小于及等于該數的正整數的積。 day08【File類、遞歸】 主要內容 File類 遞歸 教學目標 [ ] 能夠說出File對象的創建方式 [ ] 能夠說出File類獲取名稱的方法名...
摘要:練習遞歸打印多級目錄需求遍歷文件夾及文件夾的子文件夾只要結尾的文件定義一個方法參數傳遞類型的目錄方法中對目錄進行遍歷打印被遍歷的目錄名稱對遍歷得到的對象進行判斷判斷是否是文件夾是一個文件夾則繼續遍歷這個文件夾我們發現方法就是傳遞文件夾遍歷文 package com.itheima.demo02.Recursion; import java.io.File; /* 練習: 遞歸打...
閱讀 856·2021-10-11 10:59
閱讀 2792·2019-08-30 15:43
閱讀 2128·2019-08-30 11:08
閱讀 1647·2019-08-29 15:20
閱讀 1002·2019-08-29 13:53
閱讀 485·2019-08-26 13:24
閱讀 1632·2019-08-26 13:24
閱讀 2819·2019-08-26 12:08