首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Netbeans -访问txt文件,以便应用程序在netbeans之外工作-在哪里可以找到该文件?

Netbeans -访问txt文件,以便应用程序在netbeans之外工作-在哪里可以找到该文件?
EN

Stack Overflow用户
提问于 2013-03-06 23:49:56
回答 3查看 3.1K关注 0票数 0

我使用的是netbeans;当我们想要访问ressource文件(例如,包含静态信息的txt文件)时,我想不出我们应该如何组织项目:

下面是一个简单的示例,我有一个名为Test.java的文件,它读取名为myfile.txt的txt文件中的内容

我想要键入如下内容:

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        try{
            File f = new File("myfile.txt");
            Scanner s = new Scanner(f);
            System.out.println(s.next());
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

如果myfile.txt位于与.java文件相同的目录中,则这似乎是合理的。

但是,似乎如果我这样输入代码,txt文件应该与src/处于同一级别,src/是我项目的根。好的,我接受它,并把txt放在那里,这样我就可以清理和构建了。现在,如果我在netbeans中运行(绿色箭头按钮),它可以正常运行(即使在我的build文件夹中没有txt文件,这似乎很奇怪),但是如果我尝试直接执行dist文件夹中的jar (这应该是您在项目完成后想要分发的内容),程序将失败,因为在它旁边的jar ofr中没有txt文件夹。

好的,所以我改变了我的策略,去做看起来合乎逻辑的事情,那就是把我的txt放在src目录中。当我构建时,它会出现在build目录中,也会出现在jar中。

但是程序会失败(在netbeans内部和外部),因为在new file命令中指向文件的路径不正确。这样我就可以改变和输入

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        try{
            File f = new File("src/myfile.txt");
            Scanner s = new Scanner(f);
            System.out.println(s.next());
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

但现在它当然不能在netbeans之外运行,因为src文件夹对可怜的.jar文件没有任何意义。

我找不到一种方法来解决这项本应微不足道的任务。

你能帮帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-07 02:46:04

如果你想把文本文件放到jar里面,你可以这样使用:

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        try{
            Scanner s = new Scanner(Test.class.getResourceAsStream("/myfile.txt")); // <- in the src folder
            Scanner s2 = new Scanner(Test.class.getResourceAsStream("./myfile.txt")); // <- in the package of your *.java file
            System.out.println(s.next());
            System.out.println(s2.next());
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}
票数 3
EN

Stack Overflow用户

发布于 2013-03-07 00:03:21

试试这个:

File对象像这个File f = new File("myfile.txt");一样初始化。

现在,不要将myfile.txt作为jar的一部分导出,而是将其放在同一目录中jar文件的旁边。

票数 0
EN

Stack Overflow用户

发布于 2015-07-14 13:09:02

首先,通过netbeans创建一个新文件会将该文件放到项目文件夹的根目录中。(我仍然不知道如何引用这个位置)。

因此,在创建新文件时,右键单击“包”,而不是项目。我创建了一个名为resources的包,并将我的文件放入其中。我使用的解决方案(应该也适用于文件f= new file ):

代码语言:javascript
复制
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("resources/file.xml");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15251871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档