黑马程序员技术交流社区
标题:
帮我看看这个代码,最好能给我一些建议或者方法
[打印本页]
作者:
碎流
时间:
2014-9-3 01:43
标题:
帮我看看这个代码,最好能给我一些建议或者方法
//9、 编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
/**
* 思路:
*1 源,目的地
*2 遍历源文件,判断子文件是不是后缀为java的文件
*3 把这些文件通过流复制到目标文件夹中.
*4 大扫除
* */
public class Test9 {
public static void main(String[] args) throws IOException {
File1();
}
public static void File1() throws IOException
{
File dir = new File("c:\\bbb");
File f = new File("d:\\aaa");
String[] name = dir.list();
for(String wenjian : name)
{
//System.out.println(wenjian);
File newWenJian = new File(dir+"\\"+wenjian);
while(newWenJian.isFile())
{
//if((newWenJian.toString()).endsWith(".java"))
{
//定义输入流,
BufferedReader br = new BufferedReader(new FileReader(dir));
//定义输出流
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
String ss = null;
while((ss = br.readLine())!=null)
{
bw.write(ss);
}
br.close();
bw.close();
}
}
}
}
}
最好能指出我问题在哪里,谢谢了,,
作者:
︶ㄣ冰衅ヅ
时间:
2014-9-3 09:29
你这题有点乱,我说下我的思路吧. 你对比下我的思路看看哪些是你没想到的.
1:确定源和目的地
2:用File[] files = sourFile.list();方法来获取到源目录下的所有文件. 这个方法和你使用的遍历一样的
不同在于这个获得的是File文件对象,而不是字符串,这样可以直接调用对象的方法,后面使用更方便.
3:对files数组里的所有文件进行遍历.遍历的时候先判断 该文件是不是文件. isFile.如果是文件,再判断后缀是否是.java结尾的.
4. 如果是.java结尾的,那么就获取这个文件的名字. file里面有个getName方法. 这样就获取到名字了. 题目不是要求要改为.txt结尾吗.
5 所以 这时候用字符串分割的方法,将最后的获取到的源文件名字进行分割,把java给去掉.方法是字符串.substring(); 需要传参进去,传的参数是最后一个java的开始位置.为什么要是最后一个java的位置呢. 是因为为了防止文件名字是 xxx.java.java 这样一种文件. 所以方法写全就是
String newFileName = 源文件名.substring(源文件名.lastIndexOf(java))+"txt";
这样就可以将源文件名字修改成我们想要的txt结尾的文件名了.
6 最后将源文件 和 改后的文件传入IO流对象, 进行读写操作就好了. 需要注意的是 IO流需要的是File对象或者有完整路径名+文件名的字符串. 所以你传参前 先要把获得的目的地文件名进行封装成File对象 或者给其加上完整的路径名.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2