2010-08-18 86 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