组合多个输入流
Combine Multiple InputStreams
我的问题可能非常基础,但我找不到可行的解决方案。
在我的代码中,我有三个新的 InputStreams。
InputStream fstream = WasuTimeTool.class.getResourceAsStream("/resources/dbConParam.txt");
BufferedReader dbParamReader = new BufferedReader(new InputStreamReader(fstream));
String dbParamLine;
就这么简单。除了 InputStreamString 和变量之外,每个人都是一样的。他们是这样建造的:
Stream One {
}
Stream Two {
Stream Three {
}
}
当我构建一个全局流时,我在使用变量以及第二个和第三个流的冲突时遇到了一些问题。是否有解决方案来获得一个流并创建新实例,或者它们应该保留为三个不同的流?
InputStream fstream = WasuTimeTool.class.getResourceAsStream("/resources/dbConParam.txt");
BufferedReader dbParamReader = new BufferedReader(new InputStreamReader(fstream));
String dbParamLine;
更像是
Stream one{
Stream two{
Stream three{
}
}
}
这是正确的,可以。
记住:关闭 BufferedReader(又名 Stream one)也会关闭 InputStreamReader 和 InputStream!
有时 Streams 内部有一个小 cache
。为了尊重这种行为,您应该使用具有最抽象级别的 Stream,BufferedReader
在您的示例中如此遥远。
例子
如果你有这个文件:
Hello
Friend
并且您使用 InputStream
读取 Hello\nFri
,然后如果您使用 BufferedReader
中的 readLine
,您将变成 end
。这很糟糕,因为它不是我们从方法 readLine
!
接受的整行
解决方案
你应该这样做:
BufferedReader dbParamReader = new BufferedReader(new InputStreamReader(WasuTimeTool.class.getResourceAsStream("/resources/dbConParam.txt")));
String dbParamLine;
所以没有人会受骗直接使用 InputStream
。
我的问题可能非常基础,但我找不到可行的解决方案。
在我的代码中,我有三个新的 InputStreams。
InputStream fstream = WasuTimeTool.class.getResourceAsStream("/resources/dbConParam.txt");
BufferedReader dbParamReader = new BufferedReader(new InputStreamReader(fstream));
String dbParamLine;
就这么简单。除了 InputStreamString 和变量之外,每个人都是一样的。他们是这样建造的:
Stream One {
}
Stream Two {
Stream Three {
}
}
当我构建一个全局流时,我在使用变量以及第二个和第三个流的冲突时遇到了一些问题。是否有解决方案来获得一个流并创建新实例,或者它们应该保留为三个不同的流?
InputStream fstream = WasuTimeTool.class.getResourceAsStream("/resources/dbConParam.txt");
BufferedReader dbParamReader = new BufferedReader(new InputStreamReader(fstream));
String dbParamLine;
更像是
Stream one{
Stream two{
Stream three{
}
}
}
这是正确的,可以。
记住:关闭 BufferedReader(又名 Stream one)也会关闭 InputStreamReader 和 InputStream!
有时 Streams 内部有一个小 cache
。为了尊重这种行为,您应该使用具有最抽象级别的 Stream,BufferedReader
在您的示例中如此遥远。
例子
如果你有这个文件:
Hello
Friend
并且您使用 InputStream
读取 Hello\nFri
,然后如果您使用 BufferedReader
中的 readLine
,您将变成 end
。这很糟糕,因为它不是我们从方法 readLine
!
解决方案
你应该这样做:
BufferedReader dbParamReader = new BufferedReader(new InputStreamReader(WasuTimeTool.class.getResourceAsStream("/resources/dbConParam.txt")));
String dbParamLine;
所以没有人会受骗直接使用 InputStream
。