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