黑马程序员技术交流社区
标题:
请帮忙分析,思路有点混乱
[打印本页]
作者:
吴超
时间:
2012-6-22 11:39
标题:
请帮忙分析,思路有点混乱
package com.test05;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/*
* 思路:先对e:盘下所有文件进行遍历。
* 如果是.java的文件,替换后缀名.java>>>.jad,
* 将其拷贝至d:javaDir文件夹中
*
*
*/
public class Demo05 {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File dir = new File("e:\\");
fileTolist(dir);
}
public static void fileTolist(File dir) throws Exception {
// 创建要遍历的根目录
File[] files = dir.listFiles();
// 判断
for (File file : files) {
if (file.length() == 0)
continue;
if (file.isDirectory()) {
fileTolist(dir);
} else {
if (file.getName().endsWith(".java")) {
// 符合的文件copy到指定目录
File destDir = new File("d:/jad");
if (!destDir.exists())
destDir.mkdir();
FileInputStream fis = new FileInputStream(file);
String fileName = file.getName().replace(".java", ".jad");
FileOutputStream fos = new FileOutputStream(new File(
destDir, fileName));
copy(fis, fos);
}
}
}
}
// copy文件
public static void copy(InputStream ips, OutputStream ops) throws Exception {
byte[] buf = new byte[1024];
int num = 0;
while ((num = ips.read(buf)) != -1) {
ops.write(buf, 0, num);
}
ops.close();
ips.close();
}
}
复制代码
作者:
孙峰
时间:
2012-6-22 12:11
QQ截图20120522120401.png
(41.97 KB, 下载次数: 59)
下载附件
2012-6-22 12:04 上传
不知道这是不是你想要的,我感觉这个代码写的挺好的: 主要思路就是::1、 将原文件中的文件都获取出来,得到一个装文件名的数组。 File[] files。 然后对该数组遍历,如果是文件夹,则再接着获取, 知道最后能查看到每个具体的文件, 并判断该文件是不是用“.java”结尾,是的话则替换成“.jad” 。这样就获得了所有需要的文件
2、 定义一个复杂方法; public static void copy(InputStream ips, OutputStream ops) , 因为复杂用到 字节输入和输出流,就用这两个作为参数。
3、在 第1步中调用这个方法。
4、完成主函数的调用。只有这样程序才能运行。
不知道这是不是楼主想要的
作者:
闾丘日月
时间:
2012-6-22 12:32
你这个 for (File file : files)之前要做判断的。不然就容易出空指针异常,你这种硬编码当然问题不大,但是一般这种功能是作为函数封装的,对哪个盘遍历应该是由调用者指定。我主函数故意输入一个不 存在的盘符,你这里就死翘翘了。不过我看你if (file.length() == 0)这行代码可能是想解决这个问题,但是file.length()是个什么东西?files.length?
还有你关流的操作为什么在拷贝文件里面做?我觉得很奇怪,你在哪个函数关联的流就应该在哪个文件关啊。
d:/jad最好是作为函数参数传进来。
String fileName = file.getName().replace(".java", ".jad");也不严谨,如果我文件名叫1.java.java呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2