题目:
运行代码:import java.io.*;
import java.util.*;
class Write{ //写入文件类,因为涉及到目录和文件都需要写入,所有我封装成一个类
void Writef(String[] con,File file){//可参考书上283页15.5
try{
FileWriter fw=new FileWriter(file);
BufferedWriter bufw=new BufferedWriter(fw);
for(int i=0;i
bufw.write(con[i]);
bufw.newLine();
}
bufw.close();
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
public class lixiao7 {
public static void main(String[] args) {
//列出指定目录中所有的子文件名与所有的目录名。
File f = new File("d:");
File dir = new File("d:\\dir.txt");
//判断dir文件是否已经存在,如果存在删掉重写,如果不存在,那么创建
if(dir.exists()){
dir.delete();
}else{
try{
dir.createNewFile();
}catch(Exception e){
e.printStackTrace();
}
}
String[] str1 = f.list();//返回f下所有文件和目录名 返回值是String
Write fa=new Write();//创建写入类
//列出指定目录中所有的子文件名与所有的子目录名
String Direc[]=new String[str1.length];
int k=0;//用于递增Direc数组
//循环目录下list目录
File[] str3 = f.listFiles();
for(int i=0;i
File ff = str3[i];
if(!str3[i].isDirectory()){
Direc[k]=ff.getName();
k++;
}
}
//循环目录下list目录
File[] str2 = f.listFiles();//返回当前文件目录下所有文件和目录的绝对路径集合,返回值是File对象,主要用于判断是文件还是目录
for(int i=0;i
File ff = str2[i];
if(str2[i].isDirectory()){
Direc[k]=ff.getName()+"
k++;
}
}
//输出文件内容
fa.Writef(Direc,dir);
try{
FileReader fr=new FileReader(dir);
BufferedReader bufr=new BufferedReader(fr);
String s=null;
int i=0;
while((s=bufr.readLine())!=null){
i++;
System.out.println(s);
}
bufr.close();
fr.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
这次实验呢,比上次难一点点,涉及到很多知识,程序健壮性还是比较好的,原因是用了和多异常抛出,从而不会导致整个程序崩掉!注释在我看来还是比较全的;至于其中有个小知识点;
File.list() 返回的是当前文件夹目录下所有文件和目录的文件名,返回值是String数组;
File.listFiles() 返回的是当前文件目录下所有文件和目录的绝对路径的集合,返回值是File对象数组
思考:
在文件中,文件夹和文件是分开排序的,而在我的代码中,一大部分工作是为了将文件和文件夹分开写入dir.txt文件而做的工作,可以考虑是否修改掉这部分代码,直接使用File.list()返回的String数组作为Direc的参数传入写入dir.txt。特别注意的是,题目中要求在目录后面加上
补充代码:import java.io.*;
public class lixiao7 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//读取文件数组并存入Name
File dir=new File("D:\\dir.txt");
dir.delete();
File fD=new File("D:\\");
File[] f1=fD.listFiles();
String[] Name=new String[f1.length];
int n=0,m=f1.length-1;
for(int i=0;i
if(f1[i].isDirectory()){
Name[m]=f1[i].getName()+"
m--;
}else{
Name[n]=f1[i].getName();
n++;
}
}
//写入和读出文件
try{
//创建dir.txt
try{
dir.createNewFile();
}catch(Exception e){
System.out.println("dir.txt创建失败!");
}
//写入文件
FileWriter fw=new FileWriter(dir);
BufferedWriter bufw=new BufferedWriter(fw);
for(int i=0;i
bufw.write(Name[i]);
bufw.newLine();
}
bufw.flush();
bufw.close();
fw.close();
}catch(Exception e){
System.out.println("写入文件失败!");
}
//读出
try{
FileReader fr=new FileReader(dir);
BufferedReader bufr=new BufferedReader(fr);
String s=null;
int i=0;
while((s=bufr.readLine())!=null){
i++;
System.out.println(s);
}
bufr.close();
fr.close();
}catch(Exception e){
System.out.println("读出文件失败!");
}
}
}