java 递归打印某个盘下所有文件名 报NullPointerException

java 递归打印某个盘下所有文件名 报NullPointerException,第1张

你可以自己debug下,可以看到当d:\有不是目录的时候,晌弊数你调用宴首f.list(),str就是null,下面你卜森又去str.lengrh肯定就nullporint了。修改一下for循环的写法

for(int i = 0 str != null &&i<str.lengthi++)

list()方法可能返回null,如果你某个目录中为袭核培拍唯空,没有子目录,没有其他文件,就返回空,则会出现nullPointerException,

而这些出现异常时的文件,都是系统中不存在的(氏伏不是隐藏的文件,也不是系统保护的文件。)

个人认为,这些文件是跟回收站有关的,往往这种文件都是禁止外界访问的,导致File指向null对象,就抛出空指针异常。所以加个if判断是否为null.比如

public void showSubFile(File f)

{

File[] fs = f.listFiles()

if(fs != null) //看这里,看这里,看这里

for(int i=0i<fs.lengthi++)

{

File temp = fs[i]

if(temp.isFile())

{

System.out.println(temp.getName())

}

else

{

showSubFile(temp)

}

}

}

这样不会出现问题

Java是通过使用I/O文件 *** 作类,创建输入输出流,将数据保存在指定的路径下的文件里面。

示例代码:

import java.io.File

import java.io.FileOutputStream

import java.io.IOException

public class WriteFileTest {

public static void main(String[] args) {

FileOutputStream fop = null

File file

String content = "绝亮明This is the text content"

try {

file = new File("D:/test.txt")//初始化file

fop = new FileOutputStream(file)//初始化输出流

// 若文件不存在,则创建它

if (!file.exists()) {

file.createNewFile()

}

/并告/ 获取字节的内容数组

byte[] contentInBytes = content.getBytes()

fop.write(contentInBytes)//写键陵出到指定路径文件中字节的内容数组

fop.flush()

fop.close()

System.out.println("Done")

} catch (IOException e) { //捕捉异常

e.printStackTrace()

} finally {

try {

if (fop != null) {

fop.close()

}

} catch (IOException e) { //捕捉异常

e.printStackTrace()

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8208098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存