学生党一枚,学习java时遇到了一些搞不懂的问题,希望大家解答下,谢谢!

小感触 2017-09-22 02:38:46
我的想法很简单:接收一个盘符例如C,将它转换为“C:\”的形式,作为第12行的参数,最后输出该盘符下的所有文件及目录,但是运行会出现一个 java.lang.NullPointerException异常,调试时filelist为null。把"C:\"作为参数直接代入到12行,就好好的。来问问大家问题出在哪里,感觉是11行把字符串转换的地方用的不适合。但是因为是在学习,还不知道什么才是正确的方式。谢谢!
给分就抠一点了,因为毕竟以后还会发帖求助,就省着点了。

import java.io.*;
public class FileView
{
private char temp;
void setPath(char temp)
{
this.temp = temp;
}
void PrintList()
{
String ViewFlag = new String("\""+temp+":\"");
File path = new File(ViewFlag);
File[] filelist = path.listFiles();

for(int a=0;a<filelist.length;a++)
{
System.out.println(filelist[a].getAbsolutePath());
}
}
}
...全文
171 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Freefish1994 2017-09-22
  • 打赏
  • 举报
回复

public class Test {

	public static void main(String[] args) {
		FileView fileView = new FileView();
		fileView.setTemp("C");
		printList(fileView);
	}

	private static void printList(FileView fileView) {
		/*
		 * String ViewFlag = new String("\""+temp+":\"");
		 * 你这种写法相当于ViewFlag是"C:\",两头各多了一个单引号,不要加单引号
		 * 还有就是如果你用反斜杠的话,Java里要用"\\"
		 * 改成下面这种
		 */
		String viewFlag = new String(fileView.getTemp() + ":/");
		File path = new File(viewFlag);
		File[] filelist = path.listFiles();
		for (int i = 0; i < filelist.length; i++) 
			System.out.println(filelist[i].getAbsolutePath());
	}
}
class FileView {
	private String temp;

	public String getTemp() {
		return temp;
	}

	public void setTemp(String temp) {
		this.temp = temp;
	}

}
夜之虚妄 2017-09-22
  • 打赏
  • 举报
回复
import java.io.*; public class FileView { private char temp; void setPath(char temp) { this.temp = temp; } void PrintList() { temp ='c'; String ViewFlag = new String(temp+":\\"); File path = new File(ViewFlag); File[] filelist = path.listFiles(); for (int a = 0; a < filelist.length; a++) { System.out.println(filelist[a].getAbsolutePath()); } } public static void main(String[] args) { new FileView().PrintList(); } } 这样写,我这个是个例子,在你代码改动以下,你自己看吧
pheonix0992 2017-09-22
  • 打赏
  • 举报
回复
你第一种写法好像是这样的吧。String ViewFlag = new String("\"C:\\\""); 第二种写法是 String ViewFlag = new String("C:\\");

62,614

社区成员

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

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