IO概述、异常、File文件类_DAY19
IO概述:
??? 操作數(shù)據(jù)的工具
??? IO流,即數(shù)據(jù)流,數(shù)據(jù)像水流一樣通過(guò)IO工具進(jìn)行傳輸。
??? 程序? <IO>?? 硬盤? ??
??? 絕對(duì)路徑與相對(duì)路徑
1:異常(理解)
??? (1)就是程序的非正常情況。
?????? 異常相關(guān)操作:
?????????? 創(chuàng)建異常對(duì)象(JDK已定義的異常會(huì)自動(dòng)創(chuàng)建對(duì)象,自定義異常需要手動(dòng)創(chuàng)建)
?????????? 拋出異常(JDK已有定義的異常會(huì)自動(dòng)拋出異常,自定義異常需要手動(dòng)拋出)
?????? 處理異常:
?????????? 程序員在有異常拋出時(shí),異常的處理方法有兩種:(1)將異常捕獲并處理(2)聲明拋出異常
?
??? (2)異常的繼承體系結(jié)構(gòu):
?????? Throwable:
?????????? |--Error 嚴(yán)重的問(wèn)題,不需要處理的。
?????????? |--Exception 非RuntimeException必須進(jìn)行處理。兩種方案,點(diǎn)擊鼠標(biāo)即可。
????????????? |--RuntimeException 運(yùn)行時(shí)期異常,需要修正代碼。
??? (3)jvm的默認(rèn)處理方式:
?????? 默認(rèn)情況下,jvm會(huì)采用默認(rèn)處理方案:
?????????? 把異常的全路徑名稱,原因,及位置等信息顯示出來(lái)。
?????? 注意:
?????????? 如果是jvm的默認(rèn)處理方式,那么,它會(huì)在出問(wèn)題的地方結(jié)束。
??? (4)我們自己的處理方案:
?????? A:處理方式之一:使用捕獲
?????? try...catch...finally
?????????? 基本格式:
????????????? try {
????????????????? 可能有問(wèn)題的代碼;
????????????? }catch(異常對(duì)象) {
????????????????? 對(duì)問(wèn)題的處理;
????????????? }finally {?? //一定會(huì)執(zhí)行的代碼
????????????????? 釋放資源;
????????????? }
?
?????????? 變形格式:
????????????? try...catch
????????????? try...catch...catch
????????????? try...catch...catch...finally
????????????? try...finally
?????????? 多異常處理方式:
????????????? 分別捕獲分別處理,每個(gè)try對(duì)應(yīng)一個(gè)catch? (? cn.itcast2.demo4)
package cn.itcast2;import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/** 多個(gè)異常的捕獲處理:* 1:分別捕獲分別處理,每個(gè)try對(duì)應(yīng)一個(gè)catch*/ public class Demo4 {public static void main(String[] args) {DateFormat df = new SimpleDateFormat("yyyy-MM-dd");try {Date parse = df.parse("2008-08-08");System.out.println(parse);} catch (ParseException e) {System.out.println("您的日期格式有誤,請(qǐng)換成2008-08-08的格式!");}int a = 10;int b = 0; try {System.out.println(a/b);} catch (Exception e) {System.out.println("您的計(jì)算中,有數(shù)學(xué)錯(cuò)誤,請(qǐng)更換數(shù)字");}System.out.println("================");}} View Code2????????????? 分別捕獲分別處理,一個(gè)try對(duì)應(yīng)所有catch? (cn.itcast2.demo5)? ,注意:大的異常不能在前邊捕獲
package cn.itcast2;import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/** 多個(gè)異常的捕獲處理:* 2:分別捕獲分別處理,一個(gè)try對(duì)應(yīng)所有catch,注意:前邊的異常一定要小于后邊的異常* 3:一次捕獲共同處理,不能同時(shí)捕獲大的異常與小的異常*/ public class Demo5 {public static void main(String[] args) {DateFormat df = new SimpleDateFormat("yyyy-MM-dd");int a = 10;int b = 0; //2:格式2//報(bào)錯(cuò),前邊的異常不小于后邊的異常 // try { // Date parse = df.parse("2008,08-08"); // System.out.println(parse); // System.out.println(a/b); // } catch (ParseException e) { // System.out.println("您的日期格式有誤,請(qǐng)換成2008-08-08的格式!"); // } catch (ArithmeticException e) { // System.out.println("您的計(jì)算中,有數(shù)學(xué)錯(cuò)誤,請(qǐng)更換數(shù)字"); // }try {Date parse = df.parse("2008,08-08");System.out.println(parse);System.out.println(a/b);//前邊的異常一定要小于后邊的異常} catch (ParseException e) {System.out.println("您的日期格式有誤,請(qǐng)換成2008-08-08的格式!");} catch (Exception e) {System.out.println("您的計(jì)算中,有數(shù)學(xué)錯(cuò)誤,請(qǐng)更換數(shù)字");} System.out.println("try后的代碼繼續(xù)執(zhí)行...");//格式3:try{Date parse = df.parse("2008-08-08");System.out.println(parse);System.out.println(a/b);}catch(ParseException|ArithmeticException e) { //一次捕獲共同處理,不能同時(shí)捕獲大的異常與小的異常 System.out.println(e);}System.out.println(true||false);System.out.println(true|false);} } View Code????????????? 一次捕獲共同處理
???????????????????? 注意:不能同時(shí)捕獲大的異常與小的異常
?????????? 注意:
????????????? 如果多個(gè)異常,有子父關(guān)系,父異常一定要放在最后。
????????????? 如果多個(gè)異常,是平級(jí)關(guān)系,它們存在的位置沒(méi)有順序關(guān)系。
?
????????????? 執(zhí)行順序:
????????????????? 在try里面的代碼會(huì)按照從上往下執(zhí)行,一旦發(fā)生問(wèn)題,
????????????????? 就會(huì)產(chǎn)生一個(gè)異常對(duì)象,去和catch里面進(jìn)行匹配。
????????????????? 有對(duì)應(yīng)的匹配,就走對(duì)應(yīng)的處理方案。
????????????????? 沒(méi)有,就找父匹配,有就走對(duì)應(yīng)的處理方案。
????????????????? 如果找不到,那么就由jvm采用默認(rèn)處理方案。
?
?????????? JDK7的新特性:在處理多個(gè)平級(jí)的異常的時(shí)候
????????????? catch(ExceptionA | ExceptionB | ExceptionC ... e) {
?????????????
????????????? }
?
?????? B:異常處理方式之二:使用聲明拋出
?????? throws
?* ??????? throws:用于聲明函數(shù)拋出異常。用于函數(shù)聲明。
?* ??????? 多個(gè)異常可以同時(shí)聲明拋出,用逗號(hào)分隔。? (cn.itcast2.demo7)
package cn.itcast2;import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat;/** 異常處理方式:聲明異常拋出* throws:用于聲明函數(shù)拋出異常。用于函數(shù)聲明。* 是異常對(duì)象的處理方式之一。* 多個(gè)異常可以同時(shí)聲明拋出,用逗號(hào)分隔。*/ public class Demo7 {public static void main(String[] args) {int a = 10,b=0;try {method(a,b);} catch (ArithmeticException e) {e.printStackTrace();}System.err.println("--------------");try {method2(a,b);} catch (ArithmeticException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();}System.err.println("--------------");}public static void method(int a,int b) throws ArithmeticException{System.err.println(a/b);}public static void method2(int a,int b) throws ArithmeticException, ParseException{ //多個(gè)異常可以同時(shí)聲明拋出,用逗號(hào)分隔 method(a,b);DateFormat df = new SimpleDateFormat("yyyy-MM-dd");df.parse("a");}}/** 程序執(zhí)行結(jié)果 java.lang.ArithmeticException: / by zeroat cn1.Demo7.method(Demo7.java:35)at cn1.Demo7.main(Demo7.java:18) -------------- java.lang.ArithmeticException: / by zeroat cn1.Demo7.method(Demo7.java:35)at cn1.Demo7.method2(Demo7.java:39)at cn1.Demo7.main(Demo7.java:25) -------------- */ View Code??? (5)自定義異常
?????? 如果涉及其他需求,JDK沒(méi)有提供相應(yīng)的異常對(duì)象,則可以自己定義異常。
?????? 定義格式:繼承Exception或者RuntimeException。同時(shí)需要帶參的構(gòu)造方法,用于接收異常信息。
?????? public class MyException extends Exception{
?????????? public MyException(String message){
????????????? super(message);
?????????? }
?????? }
?????? 例子:cn.itcast2.demo8?? cn.itcast2.MyException.java
package cn.itcast2; /** 自定義異常:* 補(bǔ)充java沒(méi)有提供的異常類*/ public class Demo8 {public static void main(String[] args) {//規(guī)定,一個(gè)班最多只能有100個(gè)人。int classNumber = 101;//方式一:捕獲異常if(classNumber>100) {try {throw new MyException("班級(jí)人數(shù)大于100了,不能大于100!");//手動(dòng)拋出自定義異常類對(duì)象} catch (MyException e) {System.err.println("=======");System.err.println(e.getMessage()+".........");e.printStackTrace();System.err.println("=======");}}System.err.println("-------------");try {method();} catch (MyException e) {e.printStackTrace();}}//方式二:聲明拋出異常public static void method() throws MyException { //聲明拋出異常//規(guī)定,一個(gè)班最多只能有100個(gè)人。int classNumber = 101;if(classNumber>100) {throw new MyException("班級(jí)人數(shù)大于100了,不能大于100!");//手動(dòng)拋出自定義異常類對(duì)象 }System.err.println("-------------");} } View Code package cn.itcast2; /** 自定義異常:超過(guò)100就不行*/ public class MyException extends Exception {public MyException(String message) {super(message);}} View Code??? (6)面試題:
?????? A:Exception和RuntimeException的區(qū)別?
?????????? Exception:分為編譯期異常和運(yùn)行期異常。編譯期異常是必須處理的。否則,代碼不能編譯通過(guò)。
?????????? RuntimeException:運(yùn)行期異常,不需要編寫異常處理代碼,但是可能需要修正程序參數(shù)或者邏輯代碼。
?????? B:throws和throw的區(qū)別?
?????????? throws:在方法聲明上,后面跟的是異常類名。
?????????? ?????? throws聲明后面如果是一個(gè)運(yùn)行時(shí)期異常,調(diào)用者不需要處理。這種方式?jīng)]有意義。
?????????? ?????? throws聲明后面跟的是一個(gè)編譯期異常,調(diào)用者是必須處理的。
?????????? throw:在方法體中,后面跟的是異常對(duì)象名。
?????????? ?????? throw后面如果拋出的是運(yùn)行時(shí)期異常對(duì)象,那么方法上是不需要進(jìn)行聲明的。
?????????? ?????? throw后面如果拋出的是編譯時(shí)期異常對(duì)象,那么,一般在方法聲明上都是要用throws聲明該方法有異常。
?????? C:finally的面試題
?????????? a:final,finally,finalize的特點(diǎn)及區(qū)別?
????????????? final:最終的意思,可以修飾類,成員變量,成員方法
????????????????? 修飾類,類不能被繼承
???????? ???????? 修飾變量,變量是常量
????????????????? 修飾方法,方法不能被重寫
????????????? finally:是異常處理的一部分,用于釋放資源。
???????????????????? 一般來(lái)說(shuō),代碼肯定會(huì)執(zhí)行,特殊情況:在執(zhí)行到finally之前jvm退出了
????????????? finalize:是Object類的一個(gè)方法,用于垃圾回收
?????????? b:如果catch里面有return,請(qǐng)問(wèn)finally里面的代碼還執(zhí)行嗎?
?????????? ? 如果執(zhí)行,是在return前,還是后呢?
?????????? ? 會(huì)執(zhí)行,在前,確切的說(shuō)在中間,先執(zhí)行return的代碼,再執(zhí)行finally里面的代碼,最后return
?????????? c:寫一個(gè)程序,測(cè)試finally里面的操作對(duì)結(jié)果沒(méi)有影響。
????????????? finally一般只用于釋放資源。cn.itcast.demo9
?????? D:jvm的默認(rèn)處理方式? 打印,宕機(jī)
??? (7)對(duì)于異常,怎么選擇呢?
?????? A:能夠自己處理的時(shí)候,盡量自己處理。
?????? B:在方法里面盡量不要拋。
?????? C:將來(lái)在實(shí)際開(kāi)發(fā)中,我們會(huì)把不同的異常給出不同的界面進(jìn)行顯示給用戶。
??? (8)子父關(guān)系中的異常處理?
?????? class Fu {
?????????? public void show()? throws Exception? {
?????????? }
?????? }
?
?????? class Zi extends Fu {
?????????? public void show() throws RuntimeException {
?????????? }
?????? }
?
?????? class Demo {
?????????? public static void main(String[] args) {
?????????? }
?????? }
?
?????? 子的重寫方法中不能拋出比父更大的異常。
?
2:File(理解)
??? (1)因?yàn)橛脖P上對(duì)數(shù)據(jù)的存儲(chǔ)基本上都是以文件存在。為了方便對(duì)文件或者文件夾進(jìn)行操作。
??? ?? java就提供了一個(gè)類File供我們使用。本質(zhì)上是對(duì)路徑的封裝。
??? (2)File類構(gòu)造方法:
?????? A:File file = new File("d:\\a.txt");
?????? B:File file = new File("d:\\","a.txt");
?????? C:File file = new File("d:");
?????? ? File file2 = new File(file,"a.txt");
?
?????? 以上三種格式等價(jià)。
??? (3)File類的功能:
?????? A:創(chuàng)建功能
?????????? 創(chuàng)建文件:createNewFile()
?????????? 創(chuàng)建文件夾:mkdir(),mkdirs()
?????????? 例子:cn.itcast3.demo2
package cn.itcast3;import java.io.File; import java.io.IOException;/** File類的普通方法:* 1:public boolean createNewFile() throws IOException 創(chuàng)建文件* 2:public boolean mkdir() 創(chuàng)建文件夾* 注意:現(xiàn)有文件夾,后有文件* 3:public boolean mkdirs() 創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。 將所有父目錄全部創(chuàng)建。*/ public class Demo2 {public static void main(String[] args) throws IOException {//創(chuàng)建文件夾與文件對(duì)象File dir = new File("z");File file = new File("z/z.txt");//2:創(chuàng)建文件夾zboolean mkdir = dir.mkdir();System.out.println(mkdir);//1:創(chuàng)建文件z.textboolean createNewFile = file.createNewFile();System.out.println(createNewFile);//層級(jí)創(chuàng)建文件File dir2 = new File("c/a/d/e/w/d/f/t/z");boolean mkdir2 = dir2.mkdirs();System.out.println(mkdir2);}} View Code?????????? 注意:僅僅根據(jù)后綴名并不能判斷是文件還是文件夾。
?????? B:刪除功能
?????????? 刪除文件或者文件夾:delete()
?????????? 注意:
????????????? A:刪除一個(gè)帶內(nèi)容的目錄,必須先刪除內(nèi)容,在刪除目錄。
????????????? B:java中的刪除不走回收站。
?????? C:判斷功能
?????????? 判斷file是否存在:exists()
?????????? 判斷file是否是文件:isFile()
?????????? 判斷file是否是文件夾:isDirectory()
?????????? 例子:cn.itcast3.demo3-myself.text
import java.io.File; import java.io.IOException;/** File類的普通方法:* 1:public boolean delete() 文件可以直接刪除,文件夾刪除時(shí),必須保證里邊已經(jīng)沒(méi)有內(nèi)容了* 2:public boolean isHidden()測(cè)試此抽象路徑名指定的文件是否是一個(gè)隱藏文件* 3:public boolean isFile() 判斷是否是文件* 4:public boolean isDirectory() 判斷是否是文件夾* 5:public boolean exists() 測(cè)試此抽象路徑名表示的文件或目錄是否存在。*/ public class Demo3 {public static void main(String[] args) throws IOException {//創(chuàng)建文件夾File dir = new File("b");dir.mkdir();//需要先創(chuàng)建文件夾,然后創(chuàng)建文件File file = new File("b/b.txt");file.createNewFile();/* //先刪除文件,再刪除文件夾System.out.println(file.delete());System.out.println(dir.delete());*///是否是隱藏文件 System.out.println(file.isHidden());//是否是文件 System.out.println(file.isFile());//是否是文件夾 System.out.println(dir.isDirectory());// 測(cè)試此抽象路徑名表示的文件或目錄是否存在。 System.out.println(file.exists());}} View Code?????? D:重名名功能
?????????? 把舊名稱改變?yōu)樾旅Q:renameTo()
????????????? 注意:路徑問(wèn)題。
?????????? 重命名涉及兩個(gè)File對(duì)象。
?????????? 將File1重命名成File2
????????????? 在同一目錄下:
????????????????? file2文件已經(jīng)存在,重命名失敗
????????????????? file2文件不存在,重命名成功
????????????? 在不同目錄下:
????????????????? file2文件已經(jīng)存在,重命名失敗
????????????????? file2文件不存在,剪切成功
?????????? 例子:cn.itcast3.demo4
package cn.itcast3;import java.io.File;/** File類的普通方法:* public boolean renameTo(File dest) 同目錄:重命名/不同目錄:剪切加重命名*/ public class Demo4 {public static void main(String[] args) {File file = new File("a.txt");File file2 = new File("b.txt");File file3 = new File("d/c.txt");boolean renameTo = file.renameTo(file2);System.out.println(renameTo);boolean renameTo2 = file2.renameTo(file3);System.out.println(renameTo2);}} View Code?????? E:獲取功能
?????????? 基本獲取
????????????? 獲取絕對(duì)路徑:getAbsolutePath()
????????????? 獲取相對(duì)路徑:getPath()
????????????? 獲取名稱:getName()
????????????? 獲取大小:length()? //英文字母1個(gè)字節(jié),中文字母兩個(gè)字節(jié)
????????????? 獲取最后修改時(shí)間:lastModified()
????????????? 例子:cn.itcast3.demo5
package cn.itcast3;import java.io.File; import java.util.Date;/** File類的普通方法:* 1:public String getAbsolutePath() : 返回此抽象路徑名的絕對(duì)路徑名字符串。* 2:public String getPath(): 將此抽象路徑名轉(zhuǎn)換為一個(gè)路徑名字符串。* 3:public String getParent():返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒(méi)有指定父目錄,則返回 null。* 4:public File getParentFile():返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒(méi)有指定父目錄,則返回 null。* 5:public String getName():返回由此抽象路徑名表示的文件或目錄的名稱。* 6:public long length() 返回:文件存儲(chǔ)內(nèi)容的長(zhǎng)度* 7:public long lastModified():返回上一次修改時(shí)間毫秒值*/ public class Demo5 {public static void main(String[] args) {File file = new File("a.txt");File file2 = new File("D:/Lesson/JAVA/JAVA基礎(chǔ)/北京/150315/day19/code/day19/a.txt");//1 System.out.println(file.getAbsolutePath());System.out.println(file2.getAbsolutePath());System.out.println("===========");//2 System.out.println(file.getPath());System.out.println(file2.getPath());System.out.println("===========");//3String p = file.getParent();System.out.println(p);String p2 = file2.getParent();System.out.println(p2);System.out.println("===========");//4File pFile = file.getParentFile();System.out.println(pFile);File pFile2 = file2.getParentFile();System.out.println(pFile2);System.out.println("===========");//5String name = file.getName();System.out.println(name);String name2 = file2.getName();System.out.println(name2);System.out.println("===========");//6 System.out.println(file.length());//7System.out.println(file.lastModified());//返回毫秒值1428829519158LSystem.out.println(new Date(file.lastModified()));//返回日期格式 }} View Code?????????? 高級(jí)獲取
????????????? 獲取指定目錄下所有文件或者文件夾的名稱數(shù)組:list()
????????????? 獲取指定目錄下所有文件或者文件夾的File數(shù)組:listFiles()
????????????? 返回所有盤符:listRoots()
????????????? 例子1:cn.itcast3.demo6
package cn.itcast3;import java.io.File; import java.util.Arrays;/** 文件高級(jí)獲取:* 1:public static File[] listRoots() 獲取所有盤符的文件對(duì)象* 2:public String[] list() 這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。即該File下的所有文件及目錄(字符串)。* 3:public File[] listFiles() 返回一個(gè)抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件。 即File下的所有文件及目錄(File對(duì)象)。*/ public class Demo6 {public static void main(String[] args) {//1:File[] listRoots = File.listRoots();System.out.println(Arrays.toString(listRoots));//2:File dir = new File("src/cn/itcast");String[] list = dir.list();System.out.println(Arrays.toString(list));//3:File[] listFiles = dir.listFiles();System.out.println(Arrays.toString(listFiles));for (File file : listFiles) {System.out.println(file.getName());}}} View Code????????????? 例子2:cn.itcast3.demo7:獲取src\cn\itcast目錄下所有.java結(jié)尾的文件(注意是文件 ,不是文件夾)
package cn.itcast3;import java.io.File;/** 獲取src\cn\itcast目錄下所有.java結(jié)尾的文件*/ public class Demo7 {public static void main(String[] args) {//創(chuàng)建文件對(duì)象,表示指定的文件夾File dir = new File("src/cn/itcast");//方法一:(如果有文件夾是.java結(jié)尾的,則不能過(guò)濾該文件夾) // //獲取該文件夾下的所有File對(duì)象字符串表現(xiàn)(文件,文件夾) // String[] list = dir.list(); // //獲取該數(shù)組中的每一個(gè)元素 // for (String fileordir : list) { // boolean endsWith = fileordir.endsWith(".java"); // if(endsWith) { // System.out.println(fileordir); // } // }//方法二://獲取該文件夾下的所有File對(duì)象對(duì)象表現(xiàn)(文件,文件夾)File[] listFiles = dir.listFiles();//獲取該數(shù)組中的每一個(gè)元素for (File fileordir : listFiles) {//先判斷是否為文件if(fileordir.isFile()) {boolean endsWith = fileordir.getName().endsWith(".java");if(endsWith) {System.out.println(fileordir.getName());}}}}} View Code????????????? 文件過(guò)濾器:
????????????????? 接口 FilenameFilter? 重寫accept()方法?
????????????????? 方式1,定義類實(shí)現(xiàn)FilenameFilter,然后用file.list(該類的實(shí)例對(duì)象)?
????????????????? 方式2,匿名內(nèi)部類
????????????? 例子:cn.itcast3.demo8
package cn.itcast3;import java.io.File; import java.io.FilenameFilter; import java.util.Arrays;/** File的方法:* public String[] list(FilenameFilter filter)* public File[] listFiles(FilenameFilter filter)* // 3:public File(File parent,String child)* 文件過(guò)濾器* FilenameFilter:* boolean accept(File dir, String name) 將list/listFiles方法所在目錄下所有的File對(duì)象都判斷一次是否符合條件。符合條件返回true,不符合,返回false* * 獲取src\cn\itcast目錄下所有.java結(jié)尾的文件,要求使用過(guò)濾器*/ public class Demo8 {public static void main(String[] args) {//創(chuàng)建文件對(duì)象,表示指定的文件夾File dir = new File("src/cn/itcast");//獲取該文件夾下的所有符合條件的File對(duì)象字符串表現(xiàn)(文件,文件夾)String[] list = dir.list(new FilenameFilter(){ //匿名內(nèi)部類 @Overridepublic boolean accept(File dir, String name) {File thisFile = new File(dir,name);if(thisFile.isFile()){if(name.endsWith(".java")) {return true;}}return false;}});System.out.println(Arrays.toString(list));} } View Code?---------------------------------------------------------------------------------------------------------------
例子程序:
1、返回某文件夾下所有以java結(jié)尾的文件
a)使用list方法
b)使用listFiles方法
c)使用list方法加文件過(guò)濾器
?d)使用listFiles方法加文件過(guò)濾器
import java.io.File; import java.io.FilenameFilter; import java.util.Arrays;/*** 7:返回某文件夾下所有以java結(jié)尾的文件。* a)使用list方法* b)使用listFiles方法* c)使用list方法加文件過(guò)濾器* d)使用listFiles方法加文件過(guò)濾器*/ public class Test7 {public static void main(String[] args) {//a)使用list方法 (不能判斷是文件還是文件夾)/* File file=new File("src/cn1");String[] strings=file.list();for(String s:strings){if(s.endsWith(".java")){System.out.println(s);}}*///使用listFiles方法/* File file = new File("src/cn1");File[] files = file.listFiles();for (File f : files) {if (f.isFile()) {if(f.getName().endsWith(".java")){System.out.println(f.getName());}}}*///c)使用list方法加文件過(guò)濾器/* File file=new File("src/cn1");String[] strings=file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File file1=new File(dir,name);if(file1.isFile()){if(file1.getName().endsWith(".java")){return true;}}return false;}});System.out.println(Arrays.toString(strings));*///d)使用listFiles方法加文件過(guò)濾器/*File file=new File("src/cn1");File[] files=file.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File file1=new File(dir,name);if(file1.isFile()){if(file1.getName().endsWith(".java")){return true;}}return false;}});for(File f:files){System.out.println(f.getName());}*/} } View Code2、完成一個(gè)文件的創(chuàng)建,判斷,刪除。
import java.io.File; import java.io.IOException;/*** 3:完成一個(gè)文件的創(chuàng)建,判斷,刪除。*/ public class Test3 {public static void main(String[] args) throws IOException {File file=new File("src/cn2/a.test");//文件的創(chuàng)建 file.createNewFile();//判斷 System.out.println(file.isFile());System.out.println(file.isDirectory());//刪除 file.delete();} } View Code3、完成文件的創(chuàng)建、重命名、刪除。
import java.io.File; import java.io.IOException;/*** 5:完成文件的創(chuàng)建、重命名、刪除。*/ public class Test5 {public static void main(String[] args) throws IOException {//文件的創(chuàng)建File file=new File("d.txt");file.createNewFile();//重命名File file1=new File("src/cn1/e.txt");file.renameTo(file1);//刪除 file1.delete();} } View Code4、完成多級(jí)目錄的創(chuàng)建。
import java.io.File; import java.io.IOException;/*** 6:完成多級(jí)目錄的創(chuàng)建。*/ public class Test6 {public static void main(String[] args) throws IOException {File dir=new File("src/a/b/c/d/e");dir.mkdirs();File file=new File("src/a/a.txt");file.createNewFile();}} View Code?
總結(jié)
以上是生活随笔為你收集整理的IO概述、异常、File文件类_DAY19的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 拼多多免密支付怎么关闭2023
- 下一篇: 网红奶茶沪上阿姨包装旗袍图“露大腿”不雅