java - 将输入流字节转换为字符
问题描述
我有带有内容的文本
12 13 14
文本在值 12 和 13 以及 13 和 14 之间有 8 个空格
我的java方法是通过一个参数接收文本作为输入流并将每个内容存储在一个字节数组中,然后进一步将每个字节转换为一个字符
public class FileUpload implements RequestStreamHandler{
String fileObjKeyName = "sample1.txt";
String bucketName="";
/**
* @param args
*/
@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
LambdaLogger logger = context.getLogger();
byte[] bytes = IOUtils.toByteArray(inputStream);
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
sb.append("[ ");
sb1.append("[ ");
for (byte b : bytes) {
sb.append(b);
char ch = (char) b;
sb1.append(ch);
}
sb.append("]");
sb1.append("] ");
logger.log(sb.toString());
logger.log(sb1.toString());
}
}
每个字节的十进制表示正确打印如下
[ 4950323232323232323249513232323232323232324952]
但是,当转换为字符时,值之间只有一个十进制值“32”(用于空格)被转换,跳过空格之间的所有剩余字节。
[ 12 13 14]
任何人都可以建议,这是为什么。
解决方案
你如何将字节转换为字符串?它会是一样的。见下面的代码:
public static void main(String[] args) {
byte[] bytes = "12 13 14".getBytes();
System.out.println(Arrays.toString(bytes));
String str = new String(bytes,StandardCharsets.UTF_8);
System.out.println(str);
}
推荐阅读
- c# - UWP AdaptiveGridView ItemContainerStyleSelector 不起作用
- python - Python将对象附加到列表
- c++ - C++:来自 Stroustrup 示例的运算符优先级
- angular - Angular 9 + eslint:找不到规则“@angular-eslint/...”的错误定义
- android - 在领域中存储数千条记录时Android屏幕停电
- r - R - 在 X 轴上显示许多值的折线图
- javascript - Javascript - 得到一个未捕获的类型错误
- android - 如何在 android 片段中实例化 YoutubePlayerView
- c# - 重叠实体的文本 (AutoCAD/C#)
- sharepoint - 使用共享 Minrole 安装 Sharepoint 服务器