Java 如何从InputStream读取字符并将其返回给供应商<;整数>;(爪哇)
所以我有一个方法需要实现。它获取一个InputStream并返回一个供应商,如下所示:Java 如何从InputStream读取字符并将其返回给供应商<;整数>;(爪哇),java,methods,inputstream,supplier,Java,Methods,Inputstream,Supplier,所以我有一个方法需要实现。它获取一个InputStream并返回一个供应商,如下所示: 公共供应商构建管道(输入流输入) 现在我想从InputStream中读取一个字符(可能使用read()-方法)并返回它,但我不知道如何将其存储为int,以便与供应商一起返回 我希望有人能帮我。如果不经过解码桥,直接从输入流到码点是不可能的。为此,您需要知道字符集,或者假设它InputStreamReader就是那个桥 例如: InputStream is = new ByteArrayInputStream(
公共供应商构建管道(输入流输入)
现在我想从InputStream中读取一个字符(可能使用read()-方法)并返回它,但我不知道如何将其存储为int,以便与供应商一起返回
我希望有人能帮我。如果不经过解码桥,直接从
输入流
到码点
是不可能的。为此,您需要知道字符集
,或者假设它<代码>InputStreamReader就是那个桥
例如:
InputStream is = new ByteArrayInputStream(new byte[]{1,2});
InputStreamReader reader = new InputStreamReader(is, StandardCharsets.UTF_8);
现在,您可以从读取器而不是输入流获得供应商
Supplier<Integer> next(InputStreamReader reader) {
Supplier<Integer> s = () -> {
try {
return reader.read();
} catch (IOException e) {
throw new RuntimeException(e);
}
};
return s;
}
供应商下一步(InputStreamReader){
供应商s=()->{
试一试{
返回reader.read();
}捕获(IOE异常){
抛出新的运行时异常(e);
}
};
返回s;
}
请注意,
InputStreamReader
是有状态的,因此您的供应商
不会像预期的那样是透明的 InputStream是面向字节的流,如果需要字符而不是字节,则应使用InputStreamReader。也许这样的事情对你有用:
public Supplier<Integer> buildPipe(InputStream input) {
return () -> {
try {
return Integer.valueOf(input.read());
} catch (IOException e) {
e.printStackTrace();
}
return Integer.valueOf(-1);
};
}
公共供应商构建管道(输入流输入){
返回()->{
试一试{
返回Integer.valueOf(input.read());
}捕获(IOE异常){
e、 printStackTrace();
}
返回整数.valueOf(-1);
};
}
所以基本上你要问的是如何将字符串解析为整数?虽然这是可以做到的,但这不是一个好主意。您必须在try/catch中包装读取的每个字符。这不值得。打印堆栈跟踪是糟糕的异常处理。您应该将IOException包装在RuntimeException中并抛出