【发布时间】:2014-09-21 03:03:00
【问题描述】:
我认为,问题在于文件在 jar 中,这似乎使它更难了一些。
我不明白如何在从本地文件(在 jar 中)读取时实例化 InputStreamReader,如下所示:
package net.bounceme.dur.client;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Template {
private static final Logger log = Logger.getLogger(Template.class.getName());
StringBuffer buffer = new StringBuffer();
public Template() {
}
public String getTemplate() {
return buffer.toString();
}
public void load() {
// try (BufferedInputStream input = new BufferedInputStream(getClass().getClassLoader().getResourceAsStream("template.txt"))) {
try (BufferedInputStream input = new BufferedInputStream(new InputStreamReader(getClass().getClassLoader().getResourceAsStream("template.txt")),"UTF-8")) {
int data = input.read();
while (data != -1) {
buffer.append((char) data);
data = input.read();
}
} catch (IOException ex) {
Logger.getLogger(Template.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
编译错误(语法错误):
-do-compile:
[mkdir] Created dir: /home/thufir/NetBeansProjects/Mail/build/empty
[mkdir] Created dir: /home/thufir/NetBeansProjects/Mail/build/generated-sources/ap-source-output
[javac] Compiling 14 source files to /home/thufir/NetBeansProjects/Mail/build/classes
[javac] /home/thufir/NetBeansProjects/Mail/src/net/bounceme/dur/client/Template.java:23: error: no suitable constructor found for BufferedInputStream(InputStreamReader,String)
[javac] try (BufferedInputStream input = new BufferedInputStream(new InputStreamReader(getClass().getClassLoader().getResourceAsStream("template.txt")),"UTF-8")) {
[javac] ^
[javac] constructor BufferedInputStream.BufferedInputStream(InputStream,int) is not applicable
[javac] (actual argument InputStreamReader cannot be converted to InputStream by method invocation conversion)
[javac] constructor BufferedInputStream.BufferedInputStream(InputStream) is not applicable
[javac] (actual and formal argument lists differ in length)
[javac] Note: /home/thufir/NetBeansProjects/Mail/src/net/bounceme/dur/client/gui/MailGUI.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 1 error
BUILD FAILED
/home/thufir/NetBeansProjects/Mail/nbproject/build-impl.xml:924: The following error occurred while executing this line:
/home/thufir/NetBeansProjects/Mail/nbproject/build-impl.xml:264: Compile failed; see the compiler error output for details.
Total time: 3 seconds
thufir@dur:~/NetBeansProjects/Mail$
对于hovereel,结构:
thufir@dur:~/NetBeansProjects/Mail$
thufir@dur:~/NetBeansProjects/Mail$ tree src/
src/
├── client.properties
├── logging.properties
├── META-INF
│ └── persistence.xml
├── net
│ └── bounceme
│ └── dur
│ └── client
│ ├── gui
│ │ ├── ApplicationDriver.java
│ │ ├── Goof.form
│ │ ├── Goof.java
│ │ ├── MailGUI.form
│ │ ├── MailGUI.java
│ │ └── TitleBuilder.java
│ ├── jdbc
│ │ ├── Agents.java
│ │ ├── Provinces.java
│ │ ├── State.java
│ │ ├── TitleException.java
│ │ ├── TitleFactory.java
│ │ └── Title.java
│ ├── MyProps.java
│ ├── NewJFrame.form
│ ├── NewJFrame.java
│ ├── SendTLS.java
│ └── Template.java
└── template.txt
7 directories, 21 files
thufir@dur:~/NetBeansProjects/Mail$
【问题讨论】:
-
你能展示一下你的jar文件的结构吗?
-
嘿,暂时没有——不会编译!我会的。它在“顶部”,这种语法可以读取文件,路径是正确的。它在带有属性文件的默认包中。我添加了一个 src 的树形视图来显示路径。
标签: java utf-8 io inputstream bufferedinputstream