java实验7文件读写操作,java实验7

题目:

6abe4693415bd69579420387507a8468.png

运行代码: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("读出文件失败!");

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值