2010-08-18 101 views
2

我想操作一個文件在我的Java program.The讀取文件必須平行中我src文件夾。 我應該給文件路徑?適當的文件路徑來讀取

+0

你的意思是這個文件在你的源代碼路徑中? – NawaMan 2010-08-18 06:19:31

回答

2

你應該有代表您src文件夾File對象,然後建立一個新的File對象:

File textFile = new File(srcFolder, relativePath); 

你如何確定srcFolder真的取決於上下文。

編輯:如果您只是想要讀取構建時存在的文件,則應該將其包含在構建的jar文件中,並使用ClassLoader.getResourceAsStreamClass.getResourceAsStream在執行時加載它。

舉例來說,如果你有這樣的結構:

src\ 
    com\ 
     xyz\ 
      Foo.class 
    data\ 
     input.txt 

那麼你可以使用Foo.class.getResourceAsStream("/data/input.txt")Foo.class.getClassLoader.getResourceAsStream("data/input.txt")。兩者都會給你一個InputStream你可以用來加載數據。

+0

src文件夾是我的代碼所在的地方 – ako 2010-08-18 06:22:50

+2

@ako:您的源代碼或您的內置代碼?構建的代碼沒有記錄它從*創建的位置。 – 2010-08-18 06:27:59

+0

我想辦法,使得即使我的proejct被複制到不同的pc.it shold execute.So我想在一個相對path.So創建的文件我想將平行於src文件夾 – ako 2010-08-18 06:38:28

4

精心設計的例子可能會有幫助。從你的問題,我所得到的是,

源路徑:/ home/user中/ PROJECT1/src目錄/ 文件路徑:/ home/user中/ PROJECT1/src目錄/

如果是這樣的話,那麼一旦您構建項目,文件路徑不會保持不變。所以,如果你說,對於要打開的文件的相對路徑保留在編譯後的代碼是相同的,那麼你可以使用Class.getResourceAsStream(String path)返回你InputStream對於給定的文件。然後,您可以使用它構造File對象。

參考​​瞭解詳情。

+0

通常我創建文件作爲文件f =新文件(「文件名」)。所以我怎麼能在這種情況下創建它? – ako 2010-08-18 06:43:48

+0

要回答你的問題,我需要知道你構建的代碼中的文件路徑。如果你的java代碼從你正在讀取文件的位置處在jar(構建代碼)的location/src/com/foo中,並且你的文件也在同一位置,那麼文件名變量應該是「/ com/foo/yourfile 」。您可以使用 創建文件URL url = Class.getResource(String filePath); File f = new File(url.toURI()); – 2010-08-18 06:58:47

+0

我的代碼位於prjfolder/src/com.xyz中。而m文件是在prjfolder.How閱讀它? – ako 2010-08-18 07:01:35