new FileInputStream(file)中file不能为文件夹

Posted 徐浩进

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new FileInputStream(file)中file不能为文件夹相关的知识,希望对你有一定的参考价值。

今天闲来无事,写了如下程序:

 1 package com.xhj.test;
 2 
 3 import java.io.File;
 4 import java.io.FileFilter;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 import java.io.InputStream;
 9 import java.io.OutputStream;
10 
11 /**
12  *  将java文件夹下的.java文件复制到.jad文件夹中,并将.java文件改成.jad文件
13  * @作者 admin
14  */
15 public class Java2jad
16 {
17     public static void main(String[] args) throws IOException{
18         File srcfile = new File("d:/java");
19         if(srcfile.exists()&&srcfile.isDirectory()){
20             File[] files = srcfile.listFiles(new FileFilter()
21             {
22                 @Override
23                 public boolean accept(File pathname) {
24                     return pathname.getName().endsWith(".java");
25                 }
26             });
27             File dirfile = new File("d:/jad");
28             if(!dirfile.exists()||!dirfile.isDirectory()){
29                 dirfile.mkdir();
30             }
31             for(File file:files){
32                 FileInputStream fis = new FileInputStream(file);
33                 String destfilename = file.getName().replaceAll("\\.java$", "\\.jad");
34                 FileOutputStream fos = new FileOutputStream(new File(dirfile,destfilename));
35                 copyFile(fis,fos);
36                 fis.close();
37                 fos.close();
38             }
39         }
40     }
41     
42     public static void copyFile(InputStream is,OutputStream os) throws IOException{
43         int len = 0;
44         byte[] buffer = new byte[1024];
45         while((len = is.read(buffer)) != -1){
46             os.write(buffer,0,len);
47         }
48     }
49 }

功能是将java文件夹下的.java文件复制到jad文件夹中并将文件后缀改为.jad,为了测试程序,我在d盘下建立了java文件夹,

并在其中建了1.java文件夹,2.txt文件和3.java。编译执行程序,出现如下错误:

Exception in thread "main" java.io.FileNotFoundException: d:\java\1.java (拒绝访问。)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at com.xhj.test.Java2jad.main(Java2jad.java:32)

上网查了一下,new FileInputStream(file)中的file不能为文件夹,所以删除了1.java文件夹。

这样问题就成功解决了。

以上是关于new FileInputStream(file)中file不能为文件夹的主要内容,如果未能解决你的问题,请参考以下文章

java 中 byte[]FileInputStream 互相转换

java 中 byte[]FileInputStream 互相转换

File i/o2

java如何从文件中读取对象并用set保存

Java用BufferedReader读取文件中时总是乱码

java 小程序误区。。FileInputStream in = null; try in = new FileInputStream(。。。。。为啥这么定