黑马程序员技术交流社区
标题:
帮忙看看代码哪出问题了
[打印本页]
作者:
谭荣强
时间:
2014-4-27 21:25
标题:
帮忙看看代码哪出问题了
可以打印出所有的文件,但是.txt文件中只有几个,少了很多。
package day20;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
public class Test2 {
/**练习:列出D盘下的所有文件的名称。文件夹中还有文件夹,则继续在遍历,如果还是文件夹....,直到是文件。
*
*递归:函数自身调用自身
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("d:\\book");
getDfiles(f);
}
public static void getDfiles(File f){
//目的,纯文本。硬盘,高效
FileWriter fr = null;
try {
//判断文件
File ioFilename = new File("d:\\文件名集合.txt");
if(!ioFilename.exists()){
ioFilename.createNewFile();
}
//创建流
fr= new FileWriter(ioFilename);
BufferedWriter br = new BufferedWriter(fr);
//列出文件名
File[] filenames =f.listFiles();
for(File name:filenames){
//递归
if(name.isDirectory()){
getDfiles(name);
}
else{
br.write(name.toString());//
br.newLine();
br.flush();
System.out.println("abs..."+name.getAbsolutePath());//绝对路径。
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("流关闭失败");
}
}
}
}
}
作者:
展展
时间:
2014-4-27 21:38
我以前写了个便利文件夹所有得MP3文件并将文件打印在txt文本中,你给参考代码吧:
/*
创建文件列表。
将某目录下的所有MP3文件的绝对路径写到一个txt文本中。
*/
import java.io.*;
import java.util.*;
class Mp3FileList
{
public static void main(String[] args)
{
File dir=new File("e:\\bsaketball\\音乐");
List<File> list=new ArrayList<File>();
fileToList(dir,list);
System.out.println(list.size());
File mp3=new File(dir,"mp3.txt");
writeToFile(list,mp3.toString());
}
public static void writeToFile(List<File> list,String mp3FileList)
{
BufferedWriter bufw=null;
try
{
bufw=new BufferedWriter(new FileWriter(mp3FileList));
for(File f:list)
{
bufw.write(f.getAbsolutePath());
bufw.newLine();
bufw.flush();
}
}
catch (IOException e)
{
throw new RuntimeException("nono");
}
finally
{
try
{
if(bufw!=null)
bufw.close();
}
catch (IOException e)
{
throw new RuntimeException("nono");
}
}
}
public static void fileToList(File dir,List<File> list)
{
File[] files=dir.listFiles();
for(File file:files)
{
if(file.isDirectory())
fileToList(file,list);
else
{
if(file.getName().endsWith(".mp3"))
list.add(file);
}
}
}
}
复制代码
作者:
谭荣强
时间:
2014-4-27 23:50
展展 发表于 2014-4-27 21:38
我以前写了个便利文件夹所有得MP3文件并将文件打印在txt文本中,你给参考代码吧:
...
直到哪错了 谢了
作者:
焚雨成灰
时间:
2014-4-28 00:19
你每递归一次就创建一个新的写入流,难道你没发现吗,所以打印的信息是对的,但是输出是错的,因为你后面的一直在覆盖前面的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2