gpt4 book ai didi

java - 如何使用 BufferedInputStreamReader 读取 .txt 文件

转载 作者:行者123 更新时间:2023-11-29 05:20:25 25 4
gpt4 key购买 nike

我认为,问题在于文件 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$

最佳答案

我想你想要类似的东西

try (BufferedInputStream input = new BufferedInputStream(
getClass().getClassLoader().getResourceAsStream("template.txt"))) {

}

因为根据 BufferedInputStream Javadoc 只有两个构造函数,

BufferedInputStream(InputStream in)
Creates a BufferedInputStream and saves its argument, the input stream in,
for later use.
BufferedInputStream(InputStream in, int size)
Creates a BufferedInputStream with the specified buffer size, and saves
its argument, the input stream in, for later use.

并且两者都不需要 InputStreamReader。你当然可以用一个包裹上面的 BufferedInputStream

try (BufferedInputStream bis = new BufferedInputStream(
getClass().getClassLoader().getResourceAsStream("template.txt"))) {
InputStreamReader input = new InputStreamReader(bis, "UTF-8");
}

关于java - 如何使用 BufferedInputStreamReader 读取 .txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25020426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com