import java.io.*;
import java.util.*;
//需求:将一个制定目录下的MP3文件的绝对路径,存储到一个文本文件中.
//建立一个MP3文件列表文件
class listDemo{
public static void main(String[] args)throws Exception{
File dir=new File("D:/Users/Jack/Music/KuGou");//指引出索引目录
List<File> list=new ArrayList<File>();//加你list集合做临时存储
dirToList(list,dir);
System.out.println(list.size());//打印list集合中的大小
File file=new File(dir,"list.txt");//指引目标文件
listToFile(list,file);
}
public static void dirToList(List<File> list,File dir){//抽出指引目录下的所有MP3文件
//建立临时File数组临时存储,dir下的所有目录和文件
File[] fi=dir.listFiles();
//遍历该数组,做出抽选.只要结尾为MP3的文件
for(File f:fi){
if(f.isDirectory())
dirToList(list,f);//判断是目录的话,再此调用该方法
else
if(f.getName().endsWith(".mp3"))
list.add(f);
}
}
//将list下的临时存储MP3文件写入文件
public static void listToFile(List<File> list,File f)throws Exception{
BufferedWriter bufw=null;
try{
bufw=new BufferedWriter(new FileWriter(f));
//遍历数组中的File文件,只打印绝对路径
for(File ff:list){ bufw.write(ff.getAbsolutePath());
bufw.newLine();
bufw.flush();
}
}
catch(Exception e){
throw e;
}
finally{
try{
if(bufw!=null)
bufw.close();
}
catch(Exception ee){
throw ee;
}
}
}
}
B 添加义项
?
public class BufferedWriterextends Writer
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。 该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。 通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如, PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out"))); 将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。