访问类路径中给出的文件夹中的文件

时间:2015-06-21 19:01:12

标签: java file classpath

我似乎无法理解如何传递文件夹以从类路径中加载文件。它与文本文件一起使用在与.class文件相同的文件夹中,或者如果我使用files/test.txt而不是test.txt。我做错了什么?

代码:

import java.io.*;

public class T {
    public static void main(String[] args) {
        String line;
        File f = new File("test.txt");
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(f));
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
            }
        }
    }
}

文件夹和文件:

stuff/T.java
stuff/T.class

某处有一个带有test.txt文件的文件夹,我想在类路径中给出。

我使用命令java -cp .../files T从Windows命令行中的stuff文件夹运行测试。

2 个答案:

答案 0 :(得分:0)

String dirPath = "/Users/you/folder/";
String fileName = "test.txt";

File directory = new File(dirPath);
File file = new File(directory, fileName);

// Read file now

您可以在任何文件对象上使用.exists()来检查它是否存在。

答案 1 :(得分:0)

检查File是否是目录,然后在必要时循环遍历目录的内容。

public class T {

    public static void main(String[] args) {
        File f = new File("stuff");

        if(f.isDirectory()){
            for(File file:f.listFiles()){
                printFileName(file);
            }
        }else{
            printFileName(f);
        }
    }

    private static void printFileName(File f) {
        String line;
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(f));
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
            }
        }
    }
}

如果您不确定代码在哪个目录中查找File s输出当前目录。

File file = new File(".");
System.out.println(file.getAbsolutePath());