對於這個題目 我們可以分析一下:
首先我們得拿到這個正確的文件路徑
<div><pre name="code" class="java"> public static File getFile(){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入文件夾路徑:");
//從鍵盤接收一個文件夾路徑
while(true){
String line = sc.nextLine();
File dir = new File(line);
if(!dir.exists()){
System.out.println("您輸入的路徑有誤,請重新輸入:");
}else if (dir.isFile()) {
System.out.println("您輸入的是一個文件,請重新輸入");
}else{
return dir;
}
}
}
其次,可以先判斷一下我們所輸入的文件路徑是否正確,然後,在這個基礎上在判斷一下這個路徑是文件夾還是文件,在判斷爲文件的基礎上再次判斷一下是否是.java結尾的文件,計數器即自增一次,字符輸出流就寫入一次,並且換行一次.
<span style="white-space:pre"> </span>public static int printsubFiles(File dir)throws IOException{
int count=0;<span style="white-space:pre"> </span>//定義一個計數器
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\times.txt"));<span style="white-space:pre"> </span>//將其寫入到指定的目錄下
File[] subFiles =dir.listFiles(); //對於判斷之後的文件夾進行轉換爲文件數組並且進行遍歷
for(File subFile : subFiles){
<pre name="code" class="java"><span style="white-space:pre"> </span>//判斷一下這個文件是以.java後綴名的文件<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>if(subFile.isFile()&& subFile.getName().endsWith(".java")){<span style="white-space:pre">
</span> count++;<span style="white-space:pre"> </span>//計數器自增一次
bw.write(subFile.getName());<span style="white-space:pre"> </span>//字符輸出流寫入一次
bw.newLine();<span style="white-space:pre"> </span>//換行一次
}
<span style="white-space:pre"> </span>//遞歸<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span> else if(subFile.isDirectory()){ <span style="white-space:pre"> </span>//判斷一下是否是文件夾
printsubFiles(subFile);<span style="white-space:pre"> </span> //不是,證明是文件夾,繼續進行遍歷,,
}
}
bw.close();<span style="white-space:pre"> </span>//關流
return count;<span style="white-space:pre"> </span>//返回計數器的值
}
這個題目就差不多分析完了 ,接下就是主函數了,直接調用定義好的兩個方法,就好了
class Test_5 {
public static void main(String[] args)throws IOException {
File file = getFile();<span style="white-space:pre"> </span>//返回的是一個File類型的數據
System.out.println(printsubFiles(file));<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>//打印出count的值,並且可以在<span style="font-family: Arial, Helvetica, sans-serif;">D:\times.txt目錄下查看打印出的.java結尾的文件名</span>
}