A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 北极£莜蓝 中级黑马   /  2014-6-23 12:10  /  1466 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 北极£莜蓝 于 2014-6-23 12:11 编辑

public class FileTest2 {
        public static void main(String[] args) throws IOException,
                        NullPointerException {
                Scanner sc = new Scanner(System.in);
                System.out.println("输入一个指定的磁盘目录如下: D:/javacod/.......");
                String str1 = sc.nextLine();
                System.out.println("输入一个目标的磁盘目录如下: D:/javacod/.......");
                String str2 = sc.nextLine();
                // 创建文件对象
                File file1 = new File(str1);
                File file2 = new File(str2);
                System.out.println(file1);
                System.out.println(file2);
                // 获取到该目的文件下的所有文件
                String[] list = file1.list();
                System.out.println(list);
                for (int i = 0; i < list.length; i++)//为什么会把出现NullPointerException
{
                        {
                                if (list.endsWith(".java")) {
                                        File file3 = new File(file2, list);
                                        file3.createNewFile();
                                }
                        }

                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

3 个回复

倒序浏览
public class FileTest1 {
public static void main(String[] args) throws IOException {
          //指定源目录
          File file1  = new File ("E:\\javaDemo1");
          //指定目的地目录
          File file2 = new File("E:\\javaDemo");
          //获取到源文件目录下的所有文件
          String[] list = file1.list();
          for(String str : list) {
                  if(str.endsWith(".java")) {
          File file3 = new File(file2,str);
          file3.createNewFile();
                  }
          }
         
          
          
             
             
}
}
这样就没问题
回复 使用道具 举报
因为你的文件目录对象file1和file2都是新建的,在他们里面并没有任何的文件,所以,你使用file.list()时返回的内容为空,即list字符串数组对象为空,接下来你获取list的长度时使用list.length时,就会出现空指针异常

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 吴海平 于 2014-6-23 13:54 编辑

不是很明白你的需求是什么,如果是:从屏幕中输入要扫描的文件夹,如果文件夹中如果有文件包含.java的文件则复制到指定的文本文档中,可以参考以下代码
public class test1222 {
public static void main(String[] args) throws IOException {
  
       Scanner sc = new Scanner(System.in );
         System.out.println("请输入源文件路径:D:\\abc");//扫描的是文件夹
         System.out.println("请输入目的文件路径:D:\\123.txt");//存入的目的文件是文本文档
//      获取源文件和目的文件路径
         String str1=sc.nextLine();
         String str2=sc.nextLine();
//       将获取到字符串封装成文件对象
         File file1=new File(str1);
         File file2=new File(str2);
//      展开源文件,将所有文件都存入文件数组中
         File[] files=file1.listFiles();
//      判断关联目的文件是否存在,不存在则创建
         if(!file2.exists()){
         file2.createNewFile();
          }
//      展开源文件,如果文件是后缀名.java的文件则将其复制到指定的目的文件中
        for(File file:files){
        if(file.getName().endsWith(".java")){
               write2DestFile(file,file2);
         }
     }
}
//定义一个写入文件的功能,将符合条件的文件复制到指定的文本文档中
private static void write2DestFile(File file,File file2) throws IOException {
//    创建读取流并关联符合条件的文件
      FileInputStream fis =new FileInputStream(file);
//   创建输出流并联目的文件
      FileOutputStream fos = new FileOutputStream(file2);
      int by=0;
      while((by=fis.read())!=-1){//重复读写
          fos.write(by);
       }
      fis.close();
      fos.close();
      }
}

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马