自学初学者---关于文件读取的问题

hehamfll 2016-10-06 04:06:53
闲的无聊自学JAVA,学了没几天就看看视频照着敲代码。

学到目录树那里,也照着敲了一次,代码如下

package testcalendar;

import java.io.File;

public class TestFileTree {
public static void main(String[] args) {
File f=new File("d:");
printFileTree(f,0);

}

static void printFileTree(File file, int level) {
// TODO Auto-generated method stub
for (int i=0;i<level;i++){
System.out.print("-");
}
System.out.println(file.getName());

if(file.isDirectory()){
File [] files=file.listFiles();
for (File temp:files){
printFileTree(temp, level+1);
}
}
}
}

那么问题就出来了,File f=new File("d:");设定打印D:根目录的目录树打印不了会出错

-$RECYCLE.BIN
--S-1-5-18
Exception in thread "main" java.lang.NullPointerException
at testcalendar.TestFileTree.printFileTree(TestFileTree.java:21)
at testcalendar.TestFileTree.printFileTree(TestFileTree.java:22)
at testcalendar.TestFileTree.printFileTree(TestFileTree.java:22)
at testcalendar.TestFileTree.main(TestFileTree.java:8)

看样子第一个是回收站被打印出来了。
这里如果设成打印d盘下已有的比如eclipse或者其他文件夹就正常输出了。而且设成c盘系统盘也会出错
这是哪里的问题呢??

然后还有另一个例程是读取d根目录下一个文件,也是报错,错误是文件不存在,实际当然是存在的且正常的,但是如果读取d盘下eclipse里或者其他文件夹里的文件就正常。

求解。谢谢了
...全文
196 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hehamfll 2016-10-06
  • 打赏
  • 举报
回复
第二个问题我知道了,新建那个文件的时候手动加了扩展名,我新建的文件实际是a.txt.txt,所以找不到。 谢谢tomorrow_C
hehamfll 2016-10-06
  • 打赏
  • 举报
回复
引用 2 楼 tomorrow_C 的回复:
第一个,在遍历文件夹之前,要判断文件夹是否为空, if(file.isDirectory()){ File [] files=file.listFiles(); if(files!=null){ for (File temp:files){ printFileTree(temp, level+1); } } }
额,第一个就是这个问题呢!谢谢了,能帮我看下第二个是怎么回事不?
tomorrow_C 2016-10-06
  • 打赏
  • 举报
回复
第一个,在遍历文件夹之前,要判断文件夹是否为空, if(file.isDirectory()){ File [] files=file.listFiles(); if(files!=null){ for (File temp:files){ printFileTree(temp, level+1); } } }
hehamfll 2016-10-06
  • 打赏
  • 举报
回复
这个是读取文件的例程

package cn.bjsxt.test;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class TestReadFile {
	public static void main(String[] args) {
		FileReader reader=null;
		try {
			reader=new FileReader("d:/a.txt");
			char c=(char)reader.read(); 
			char c2=(char)reader.read(); 
			System.out.println(""+c+c2);
			} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			}finally {
				try {
					if(reader!=null){
						reader.close();
					}
				} catch (Exception e) {
				// TODO: handle exception
					e.printStackTrace();
				}
			}
		
	}
}
就这里reader=new FileReader("d:/a.txt");如果换下面的文件夹就可以,根目录就不行

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧