关于ListFiles的问题。。。

问题描述

这是一个在文件夹下搜索给定文件,并且返回路径的代码,工程一部分:publicstaticStringSearchFile(Stringdirectory,Stringfilename){FileabsolutePath=newFile(directory);if(!absolutePath.exists()){System.out.println("找不到指定的路径,请重新指定!");returnnull;}else{if(absolutePath.isDirectory()){File[]filelist=absolutePath.listFiles();for(Filef:filelist){Stringresult=SearchFile(f.toString(),filename);if(result!=null)returnresult;}returnnull;}else{if(filename.equals(absolutePath.getName()))returnabsolutePath.getPath();else{returnnull;}}}}算法使用了递归。。。。但我在测试时有的时候情况很顺利(比如在F盘),有的时候(换了其他盘之后)在红字处会出现NullPointerException。。。。。十分诡异。。。求达人指点~

解决方案

解决方案二:
listFiles()方法返回null:publicFile[]listFiles(){String[]ss=list();if(ss==null)returnnull;intn=ss.length;File[]fs=newFile[n];for(inti=0;i<n;i++){fs[i]=newFile(ss[i],this);}returnfs;}调用的list():publicString[]list(){SecurityManagersecurity=System.getSecurityManager();if(security!=null){security.checkRead(path);}returnfs.list(this);}
解决方案三:
看看jdk里面关于ListFile返回值的说明:Returns:Anarrayofabstractpathnamesdenotingthefilesanddirectoriesinthedirectorydenotedbythisabstractpathname.Thearraywillbeemptyifthedirectoryisempty.Returnsnullifthisabstractpathnamedoesnotdenoteadirectory,orifanI/Oerroroccurs.有两种情况可以回返回null1)父路径不是文件夹。2)出现IO错误。从你的代码来看,你的程序是由于IO错误导致的。你看看磁盘的权限、或指定的文件夹是否被别的进程锁死了,可以把出错的文件路径输出来看看.

时间: 2024-07-28 12:47:22

关于ListFiles的问题。。。的相关文章

列出目录下所有文件名---ListFiles.java

文件名 /* * Created on 2004-12-9 * 我还未发现哪个常用软件中有这个功能,因此写了这个class * 你可以将光盘中的文件名列在txt文件中,便于将来的查找,或打印出来. * 不用为了查找某个光盘中的文件而一张一张光盘去找,又慢又损耗光驱. * 当然也可以选择某个目录,记录下目录下的所有文件名. */ /** * @author Shi Weifeng * ListFiles类能够将目录下的所有文件名写入你指定的文本文件中. */import java.io.*;pub

java File.listFiles() 返回值无法操作的问题

问题描述 java File.listFiles() 返回值无法操作的问题 File[] files = myfileFile.listFiles();//**这个返回值无法操作,是怎么回事.** for(File f : files) { System.out.println("1"); if(f.exists()) //这里我的测试文件是存在的,但exists()返回false. { System.out.println("10"); } if(f.canRea

idea编辑器在os x系统下listFiles读不出文件

问题描述 idea编辑器在os x系统下listFiles读不出文件 本人使用的是os x系统,以前一直用的是myeclipse,最近在试着用idea跑一些以前的简单案例,下面这段代码不知道为什么没有效果,在osx上的myeclipse上跑的都挺正常的 public static void main(String[] args) { File dir = new File(""./""); File[] subs = dir.listFiles(); for (Fi

null-ftpsclient 的listfiles返回值为空

问题描述 ftpsclient 的listfiles返回值为空 public boolean ftptest(String server,String userName,String passWord){ final int dataTimeout = 5000; X509TrustManager x509m = new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return nu

io流-listFiles 大数据量时内存溢出

问题描述 listFiles 大数据量时内存溢出 描述: 获取一个文件集合,通过文件获取文件名集合,再根据文件内容筛选文件,存储在Map里 问题: 文件服务器A文件夹下,存在近7万个文件,以XML格式存储,调用listFiles,再做put操作时, 内存就会溢出,调整过eclipse的堆与非堆内存,加大了1024M,也同样抛出内存溢出异常, 恳请大家指点迷津,给个好的解决方案,或者案例参考,谢谢了 这个方法需要将内容存储在Map对象内然后返回这个Map对象,给其他成员调用,这个内存溢出,因该是在

关于 java.io 中的 File.listFiles(String dir)

 本来想用如下代码得到tempfile文件夹下的最后一个文件[夹]的(用文件名排序), File tempfile = new File(dir + File.separator + "results"); File list[] = tempfile.listFiles(); int i = list.length - 1; File file = list[i];可惜当tempfile 下只有两个文件时,就会出错!可知: File.listFiles(String dir) 所得到

JSP单页面网站文件管理器

js|页面 这个文件的开发的设计思想是这样的.有的web 网站,或者B/S 软件的客户,在软件的安装调试阶段,往往对某些细节有特殊要求,也许,是字体的调整,也许是界面方面的小改动意见.面对这样的情况,如果用户没有开放FTP 功能,则开发和维护人员往往就必须亲临现场做一些很小的调试工作. 即浪费了时间,也浪费了人力物力. 在这样的情况下,我开发了这个具有文件管理功能的 JSP 单页面文件.它提供了文件夹的新增,更名,删除:文件的修改,更名,删除和上传的功能.基本能满足在软件的安装调试阶段,小的修改

java js-java servlet这是单个下载,怎么打包批量下载

问题描述 java servlet这是单个下载,怎么打包批量下载 package cn.szusst.aqms.action.common; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.ServletE

线程管理(四)操作线程的中断机制

操作线程的中断机制 在之前的指南里,你学习了如何中断执行线程和如何对Thread对象的中断控制.之前例子中的机制可以很容易中断的线程中使用.但是如果线程实现的是由复杂的算法分成的一些方法,或者它的方法有递归调用,那么我们可以用更好的机制来控制线程中断.为了这个Java提供了InterruptedException异常.当你检测到程序的中断并在run()方法内捕获,你可以抛这个异常. 在这个指南中, 我们将实现的线程会根据给定的名称在文件件和子文件夹里查找文件,这个将展示如何使用Interrupt