这是我的Netbeans项目结构:
Maine
是main
的班级。我想阅读Netbeans"空文件中的文本行" HighlightInput
有Scanner
个对象,但我无法弄清楚如何操作。
由于什么适用于不同的项目(见下文),我尝试了这个(以及许多其他的东西):
InputStream myStream = null;
myStream = Class.forName("gbl/Maine").getClassLoader() //// exception here
.getResourceAsStream("HighlightInput");
Path p = Paths.get(myStream.toString());
Scanner sc = new Scanner(p);
Exception in thread "AWT-EventQueue-0" java.security.PrivilegedActionException: java.lang.ClassNotFoundException: gbl/Maine
由于下面还有其他功能,我试过这个:
File file = new File("src/HighlightInput");
Scanner sc = new Scanner(file); //// exception here
Exception in thread "AWT-EventQueue-0" java.security.PrivilegedActionException: java.io.FileNotFoundException: src\HighlightInput (The system cannot find the path specified)
我该怎么做才能阅读文件" HighlightInput"?
=========================
这就是为什么我尝试了我的所作所为 - 我遵循了两种不同的明显模式,但未成功:
这里有什么适用于不同的项目(Masterwords
包含main
),下面列出的结构,用于读取名为&#34的Netbeans文件;帮助":
myStream = Class.forName("masterwords.Masterwords").getClassLoader()
.getResourceAsStream("Help");
以下工作原理是读取名为" dictionary":
的文件File file = new File("src/dictionary");
Path in_path = file.toPath();
答案 0 :(得分:2)
InputStream myStream = Maine.class.getResourceAsStream("/HighlightInput");
Scanner sc = new Scanner(myStream, "UTF-8");
资源不是文件,但可以驻留在.jar
中。在相同的jar /同类dir中,您可以使用类似getClass().getResource(...)
的内容。这是相对于类包目录的,因此" /突出显示"它对应于root dir aka默认包。
扫描程序可以立即对该InputStream进行操作。需要指示字符集编码,否则采用本地操作系统编码 - 不可移植。
如果你想写到资源文件:不要 - 因为正常情况下编译为.jar作为分布式应用程序。在这种情况下使用资源作为模板并将其复制到用户主目录中的某个目录。