黑马程序员技术交流社区
标题:
关于文件名过滤器的问题。将。java文件复制到制定目录并改名为。txt
[打印本页]
作者:
温晓慧
时间:
2015-1-16 15:15
标题:
关于文件名过滤器的问题。将。java文件复制到制定目录并改名为。txt
想用文件名过滤器,但是一用就空指针异常。不知道为什么?请假一下大神
package chart8;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* 思路:
* 1,输入路径
* 2,判断是否是存在以及是否是文件夹
* 3,将文件夹传入copyDeom方法中
* */
public class JavaFileCopy
{
public static void main(String[] args)
{
System.out.println("请输入需要复制的文件夹路径");
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String path = null;
try
{
path = bufr.readLine();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
File dir = new File(path);
if((dir.exists()&&dir.isFile()))
{
System.out.println("路径不对");
}
copyAndRename(dir);
System.out.println("复制成功");
}
public static void copyAndRename(File dir)
{
File[] files = dir.listFiles();
for(File file:files)
{
if(file.isDirectory())
{
copyAndRename(file);
}
else
{
/*File[] filess = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File file, String name) {
// TODO Auto-generated method stub
return name.endsWith(".java");
}
});
for(File file1 :filess)*/
//本想用过滤器,但是发现,过滤器用上了,总是空指针异常为啥呢?
if(file.getName().endsWith(".java"))
{
File newDir = new File("D:\\IO8\\TEXT");
if(!(newDir.exists()))
{
newDir.mkdirs();
}
String newName = file.getName().replaceAll(".java", ".txt");
FileInputStream fis=new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File(newDir,newName));
byte[] buf = new byte[1024];
int len = -1;
while((len= fis.read(buf))!=-1)
{
fos.write(buf, 0, buf.length);
}
fis.close();
fos.close();
}
}
}
}
复制代码
作者:
vermouth
时间:
2015-1-16 16:43
过滤器中,如果目录是空,返回值就是空。
返回值是空,遍历时候应该会出现空指针异常吧。
作者:
温晓慧
时间:
2015-1-18 00:19
vermouth 发表于 2015-1-16 16:43
过滤器中,如果目录是空,返回值就是空。
返回值是空,遍历时候应该会出现空指针异常吧。 ...
恩恩。好像是判断是否是目录之后else都是文件了,所以不能过滤到File[]中。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2