更新時間:2020-09-14 17:05:24 來源:動力節點 瀏覽2680次
一.練習的題目
(一)在電腦D盤下創建一個文件為HelloWorld.txt文件,判斷他是文件還是目錄,在創建一個目錄IOTest,之后將HelloWorld.txt移動到IOTest目錄下去;之后遍歷IOTest這個目錄下的文件:
package?com.xykj.lesson1;??
??
import?java.io.File;??
import?java.io.IOException;??
??
??
public?class?Test1?{??
????/**??
?????*?1.?在電腦D盤下創建一個文件為HelloWorld.txt文件,??
?????*?判斷他是文件還是目錄,再創建一個目錄IOTest,??
?????*?之后將HelloWorld.txt移動到IOTest目錄下去;??
?????*?之后遍歷IOTest這個目錄下的文件??
?????*???
?????*?程序分析:??
?????*?1、文件創建使用File的createNewFile()方法??
?????*?2、判斷是文件用isFile(),判斷是目錄用isDirectory??
?????*?3、創建目錄用:mkdirs()方法??
?????*?4、移動文件用:renameTo??
?????*?5、遍歷目錄用:list()方法獲得存放文件的數組,foreach遍歷的方法把文件打印出來??
?????*?*/??
????public?static?void?main(String[]?args)?{??
?????????//在電腦D盤下創建一個文件為HelloWorld.txt文件??
????????File?file=new?File("D:","HelloWorld.txt");??
??????????
????????//創建文件,返回一個布爾值??
????????boolean?isCreate;??
????????try?{??
????????????isCreate?=?file.createNewFile();??
????????????if?(isCreate)?{??
????????????????System.out.println("創建文件成功!");??
????????????}else?{??
????????????????System.out.println("創建文件失敗!文件已經存在");??
????????????}??
????????}?catch?(IOException?e)?{??
????????????System.out.println("創建文件失敗!");??
????????}??
??????????
????????//?判斷他是文件還是目錄,??
????????if?(file.isFile())?{??
????????????System.out.println("這是一個文件");??
????????}?else?{??
????????????System.out.println("這是一個目錄");??
????????}??
??????????
????????//再創建一個目錄IOTest??
????????File?file2=new?File("D:/IOTest");??
????????file2.mkdirs();??
??????????
????????//HelloWorld.txt移動到IOTest目錄下去?失敗?》??
????????if?(file.renameTo(file2))?{??
????????????System.out.println("文件移動成功!");??
????????}?else?{??
????????????System.out.println("文件移動失敗");??
????????}??
??????????
????????//遍歷IOTest目錄下的文件??
????????String[]?arr=file2.list();??
????????for?(String?string?:?arr)?{??
????????????System.out.println(string);??
????????}??
????}??
}
//上面移動文件要指明文件路徑和文件名
上面的file.renameTo(file2)改為:
file.renameTo(file2.getPath + "/" + file.getName());
就不會有錯了。
(二) 遞歸實現輸入任意目錄,列出文件以及文件夾,效果看圖
1.先建一個FileUtile工具類
package?com.xykj.lesson2;??
??
import?java.io.File;??
import?java.util.ArrayList;??
import?java.util.List;??
????/**??
?????*?這是一個獲取目錄下所有文件夾內的所有文件的封裝類??
?????*?當然前提是你要傳進來一個正確路徑的文件夾??
?????*?*/??
public?class?FileUtils?{??
??????
????//獲取文件夾下所有的文件??
????public?static?List?getAllFiles(String?dir){??
??????????
????????//創建一個集合存放遍歷到的File??
????????List<?File?>files=new?ArrayList();??
??????????
????????File?file=new?File(dir);??
????????//文件夾必須存在????????????????并且要是文件夾??
????????if?(file.exists()&&file.isDirectory())?{??
????????????//重點!????這里要本身一直遍歷??
????????????longErgodic(file,files);//把遍歷得到的東西存放在files里面??
????????}??
????????return?files;??
????}??
??????
????//重點理解,這是一個遞歸方法,會不斷來回調用本身,但是所有獲得的數據都會存放在集合files里面??
????private?static?void?longErgodic(File?file,?List?files)?{??
??????????
????????//.listFiles()方法的使用??
????????//把文件夾的所有文件(包括文件和文件名)都放在一個文件類的數組里面???
????????File[]?fillArr=file.listFiles();??
??????????
????????//如果是一個空的文件夾??
?????????if?(fillArr==null)?{??
?????????????//后面的不執行,直接返回??
????????????return;??
????????}??
???????????
????????//如果文件夾有內容,遍歷里面的所有文件(包括文件夾和文件),都添加到集合里面??
?????????for?(File?file2?:?fillArr)?{??
???????????????
?????????????//如果只是想要里面的文件或者文件夾或者某些固定格式的文件可以判斷下再添加??
?????????????files.add(file2);??
???????????????
?????????????//添加到集合后,在來判斷是否是文件夾,再遍歷里面的所有文件??
?????????????//方法的遞歸??
?????????????longErgodic(file2,?files);??
????????}??
????}??
}??
2.再建一個主方法調用類
package?com.xykj.lesson2;??
??
import?java.io.File;??
import?java.util.List;??
??
public?class?Test2?{??
????/**??
?????*?遞歸實現輸入任意目錄,列出文件以及文件夾??
?????*???
?????*?設計:在FileUtils類里面實現了邏輯操作,在另一邊調用就可以了??
?????*?*/??
????public?static?void?main(String[]?args)?{??
?????????//比如輸入D盤??
????????Listlist=FileUtils.getAllFiles("D:");??
????????//輸出所有的文件和文件夾的名字??
????????for?(File?file?:?list)?{??
????????????System.out.println(file);??
????????}??
??
????}??
??
}??
(三) 遞歸實現列出當前工程下所有.java文件
package?com.xykj.lesson3;??
??
import?java.io.File;??
import?java.util.List;??
??
import?com.xykj.lesson2.FileUtils;??
??
public?class?Test3?{??
????/**??
?????*?遞歸實現列出當前工程下所有.java文件??
?????*?還是要題目2的遍歷文件的工具類來獲取所有的文件,再過濾.java文件就可以了??
?????*?當前目錄的地址:輸入.就可以獲取??
?????*?*/??
????public?static?void?main(String[]?args)?{??
?????????//輸入.??獲取當前文件的?所有文件??
????????Listlist=FileUtils.getAllFiles(".");??
????????//輸出.java后綴的文件的名字??
????????for?(File?file?:?list)?{??
????????????if?(file.toString().endsWith(".java"))?{??
????????????????System.out.println(file.getName());??
????????????}??
????????}??
??
????}??
??
}??
(四)從磁盤讀取一個文件到內存中,再打印到控制臺
package?com.xykj.lesson4;??
??
import?java.io.File;??
import?java.io.FileInputStream;??
??
public?class?Tset4?{??
????/**??
?????*?從磁盤讀取一個文件到內存中,再打印到控制臺??
?????*???
?????*?程序設計:??
?????*?1、讀取文件用到FileinputSteam???
?????*?2、把讀取的內容不斷加入到StringBuffer,??
?????*?3、再把StringBuffer打印出來就可以??
?????*?*/??
????public?static?void?main(String[]?args)?{??
??
????????//?讀取D:\notePad\aa.txt里面的內容??
????????File?file?=?new?File("D:\\notePad\\aa.txt");??
????????try?{??
????????????//?創建讀取流即輸入流??
????????????FileInputStream?fis?=?new?FileInputStream(file);??
????????????int?len?=?0;??
????????????byte[]?buf?=?new?byte[1024];??
????????????StringBuffer?sb?=?new?StringBuffer();??
????????????//?把讀取的數據添加到StringBuffer里面??
????????????while?((len?=?fis.read(buf))?!=?-1)?{??
????????????????sb.append(new?String(buf,?0,?len));??
????????????}??
????????????//?把StringBuffer里面的內容打印出來??
????????????System.out.println(sb);??
????????????fis.close();??
????????}?catch?(Exception?e)?{??
????????????e.printStackTrace();??
????????}??
????}??
}
以上就是動力節點java培訓機構的小編針對“Java io流編程練習題,你都會做嗎”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習