我的想法很简单:接收一个盘符例如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());
}
}
}

解决方案 »

  1.   

    你第一种写法好像是这样的吧。String ViewFlag = new String("\"C:\\\"");第二种写法是 String ViewFlag = new String("C:\\");
      

  2.   

    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();
        }
    }
    这样写,我这个是个例子,在你代码改动以下,你自己看吧
      

  3.   


    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;
    }}