我似乎无法理解如何传递文件夹以从类路径中加载文件。它适用于与.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
从窗口中命令行中的 stuff 文件夹运行测试。
String dirPath = "/Users/you/folder/";
String fileName = "test.txt";
File directory = new File(dirPath);
File file = new File(directory, fileName);
// Read file now
您可以在任何文件对象上使用 .exists() 来检查它是否存在。
检查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
输出当前目录。
File file = new File(".");
System.out.println(file.getAbsolutePath());