2015-06-21 109 views
0

我似乎無法理解如何傳遞文件夾來加載類路徑中的文件。它適用於.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 

某處有一個文件與我想在classpath給予test.txt文件夾中。

我使用命令java -cp .../files T在windows命令行中的東西文件夾中運行測試。

+0

text.txt的相對路徑是'files/test.txt',如果您希望它只是'test.txt'將它與類文件放在一起。如果有一些類或庫,將文件添加到類路徑將會很有用。 –

+0

如果我有一個jar文件,我想添加一些新的文本文件用於各種事情?我如何將它們交給罐子使用? – Sunspawn

+0

你將再次必須使用相對路徑[http://stackoverflow.com/questions/2393194/how-to-access-resources-in-jar-file –

回答

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()來檢查它是否存在。

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的輸出當前目錄。

File file = new File("."); 
System.out.println(file.getAbsolutePath()); 
相關問題