一.練習(xí)的題目
(一)在電腦D盤下創(chuàng)建一個文件為HelloWorld.txt文件,判斷他是文件還是目錄,在創(chuàng)建一個目錄IOTest,之后將HelloWorld.txt移動到IOTest目錄下去;之后遍歷IOTest這個目錄下的文件:
package?com.xykj.lesson1;????import?java.io.File;??import?java.io.IOException;??????public?class?Test1?{????????????public?static?void?main(String[]?args)?{???????????//在電腦D盤下創(chuàng)建一個文件為HelloWorld.txt文件??????????File?file=new?File("D:","HelloWorld.txt");????????????????????//創(chuàng)建文件,返回一個布爾值??????????boolean?isCreate;??????????try?{??????????????isCreate?=?file.createNewFile();??????????????if?(isCreate)?{??????????????????System.out.println("創(chuàng)建文件成功!");??????????????}else?{??????????????????System.out.println("創(chuàng)建文件失敗!文件已經(jīng)存在");??????????????}??????????}?catch?(IOException?e)?{??????????????System.out.println("創(chuàng)建文件失敗!");??????????}????????????????????//?判斷他是文件還是目錄,??????????if?(file.isFile())?{??????????????System.out.println("這是一個文件");??????????}?else?{??????????????System.out.println("這是一個目錄");??????????}????????????????????//再創(chuàng)建一個目錄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());
就不會有錯了。
(二) 遞歸實現(xiàn)輸入任意目錄,列出文件以及文件夾,效果看圖
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){????????????????????//創(chuàng)建一個集合存放遍歷到的File??????????List<?File?>files=new?ArrayList();????????????????????File?file=new?File(dir);??????????//文件夾必須存在????????????????并且要是文件夾??????????if?(file.exists()&&file.isDirectory())?{??????????????//重點!????這里要本身一直遍歷??????????????longErgodic(file,files);//把遍歷得到的東西存放在files里面??????????}??????????return?files;??????}????????????//重點理解,這是一個遞歸方法,會不斷來回調(diào)用本身,但是所有獲得的數(shù)據(jù)都會存放在集合files里面??????private?static?void?longErgodic(File?file,?List?files)?{????????????????????//.listFiles()方法的使用??????????//把文件夾的所有文件(包括文件和文件名)都放在一個文件類的數(shù)組里面???????????File[]?fillArr=file.listFiles();????????????????????//如果是一個空的文件夾???????????if?(fillArr==null)?{???????????????//后面的不執(zhí)行,直接返回??????????????return;??????????}?????????????????????//如果文件夾有內(nèi)容,遍歷里面的所有文件(包括文件夾和文件),都添加到集合里面???????????for?(File?file2?:?fillArr)?{??????????????????????????????//如果只是想要里面的文件或者文件夾或者某些固定格式的文件可以判斷下再添加???????????????files.add(file2);??????????????????????????????//添加到集合后,在來判斷是否是文件夾,再遍歷里面的所有文件???????????????//方法的遞歸???????????????longErgodic(file2,?files);??????????}??????}??}??
2.再建一個主方法調(diào)用類
package?com.xykj.lesson2;????import?java.io.File;??import?java.util.List;????public?class?Test2?{????????????public?static?void?main(String[]?args)?{???????????//比如輸入D盤??????????Listlist=FileUtils.getAllFiles("D:");??????????//輸出所有的文件和文件夾的名字??????????for?(File?file?:?list)?{??????????????System.out.println(file);??????????}????????}????}??
(三) 遞歸實現(xiàn)列出當(dāng)前工程下所有.java文件
package?com.xykj.lesson3;????import?java.io.File;??import?java.util.List;????import?com.xykj.lesson2.FileUtils;????public?class?Test3?{????????????public?static?void?main(String[]?args)?{???????????//輸入.??獲取當(dāng)前文件的?所有文件??????????Listlist=FileUtils.getAllFiles(".");??????????//輸出.java后綴的文件的名字??????????for?(File?file?:?list)?{??????????????if?(file.toString().endsWith(".java"))?{??????????????????System.out.println(file.getName());??????????????}??????????}????????}????}??
(四)從磁盤讀取一個文件到內(nèi)存中,再打印到控制臺
package?com.xykj.lesson4;????import?java.io.File;??import?java.io.FileInputStream;????public?class?Tset4?{????????????public?static?void?main(String[]?args)?{????????????//?讀取D:notePadaa.txt里面的內(nèi)容??????????File?file?=?new?File("D:notePadaa.txt");??????????try?{??????????????//?創(chuàng)建讀取流即輸入流??????????????FileInputStream?fis?=?new?FileInputStream(file);??????????????int?len?=?0;??????????????byte[]?buf?=?new?byte[1024];??????????????StringBuffer?sb?=?new?StringBuffer();??????????????//?把讀取的數(shù)據(jù)添加到StringBuffer里面??????????????while?((len?=?fis.read(buf))?!=?-1)?{??????????????????sb.append(new?String(buf,?0,?len));??????????????}??????????????//?把StringBuffer里面的內(nèi)容打印出來??????????????System.out.println(sb);??????????????fis.close();??????????}?catch?(Exception?e)?{??????????????e.printStackTrace();??????????}??????}??}
以上就是長沙一度軟件培訓(xùn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java io流編程練習(xí)題,你都會做嗎”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。