gpt4 book ai didi

spring - spring中读取txt文件的方法

转载 作者:行者123 更新时间:2023-12-04 18:23:22 25 4
gpt4 key购买 nike

我有一个要求,我需要通过 spring 框架读取文本文件的内容。为此,我在我的服务实现类中创建了一个方法,如下所示 -

public String readFile(File file)

此方法将文件名作为输入并读取文件。

我正在为 Spring 编写 XML 代码,如下所示 -
<bean id="fstream" class="java.io.FileInputStream">
<constructor-arg value="C:/text.txt" />
</bean>
<bean id="in" class="java.io.DataInputStream">
<constructor-arg ref="fstream"/>
</bean>
<bean id="isr" class="java.io.InputStreamReader">
<constructor-arg ref="in"/>
</bean>
<bean id="br" class="java.io.BufferedReader">
<constructor-arg ref="isr"/>
</bean>

以下代码进入我的方法 -
public String readFile(File file)
{
String line = null;
String content = "";

try
{
ApplicationContext context = new ClassPathXmlApplicationContext("FileDBJob.xml");

BufferedReader br = (BufferedReader) context.getBean("br");

while((line = br.readLine())!=null)
content = content.concat(line);
}
catch (Exception e)
{
e.printStackTrace();
}
return content;
}

但这里的问题是我需要在 XML 中硬编码文件名,所以没有使用文件参数。

请帮助找到解决方案。因为我是 Spring 的新手,所以我可能会错过一些东西。任何帮助都会有很大帮助。

最佳答案

不要注入(inject)流和读取器,这并不是 Spring 的真正用途。我会注入(inject)文件本身:

public class MyFileReader {

private File file;

public String readFile() {
StringBuilder builder = new StringBuilder();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(getFile()));
String line = null;
while ((line = reader.readLine()) != null)
builder.append(line);
} catch (IOException e) {
e.printStackTrace();
} finally {
closeQuietly(reader);
}
return builder.toString();
}

private void closeQuietly(Closeable c) {
if (c != null) {
try {
c.close();
} catch (IOException ignored) {}
}
}

public File getFile() {
return file;
}

public void setFile(File file) {
this.file = file;
}

}

然后你的 bean def 看起来像这样:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:app.properties"/>
</bean>

<bean class="com.myapp.MyFileReader">
<property name="file" value="${filePath}" />
</bean>

剩下的就是使用正确的信息创建您的 app.properties 文件。您还可以通过使用 -DfilePath=/foo/bar/whatever.txt 调用应用程序来设置该值。

关于spring - spring中读取txt文件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202494/

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