- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将 ArrayList 对象转换为字节字符串,以便它可以通过套接字发送。当我运行此代码时,它会正确转换为字符串,但当我尝试将其转换回来时,出现异常“java.io.StreamCorruptedException:无效的流 header :EFBFBDEF”。我在这里看到的其他答案并没有真正帮助,因为我使用的是匹配的 ObjectOutputStream 和 ObjectInputStream。很抱歉,如果有一个简单的修复方法,因为我是使用流对象的新手。
try {
ArrayList<String> text = new ArrayList<>();
text.add("Hello World!");
String byteString = Utils.StringUtils.convertToByteString(text);
ArrayList<String> convertedSet = (ArrayList<String>) Utils.StringUtils.convertFromByteString(byteString);
VCS.getServiceManager().addConsoleLog(convertedSet.get(0));
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
public static String convertToByteString(Object object) throws IOException {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(bos)) {
out.writeObject(object);
final byte[] byteArray = bos.toByteArray();
return new String(byteArray);
}
}
public static Object convertFromByteString(String byteString) throws IOException, ClassNotFoundException {
final byte[] bytes = byteString.getBytes();
try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInput in = new ObjectInputStream(bis)) {
return in.readObject();
}
}
最佳答案
我想通了。我不得不使用 Base64 编码。转换方法必须更改为以下内容:
public static String convertToByteString(Object object) throws IOException {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(bos)) {
out.writeObject(object);
final byte[] byteArray = bos.toByteArray();
return Base64.getEncoder().encodeToString(byteArray);
}
}
public static Object convertFromByteString(String byteString) throws IOException, ClassNotFoundException {
final byte[] bytes = Base64.getDecoder().decode(byteString);
try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInput in = new ObjectInputStream(bis)) {
return in.readObject();
}
}
关于java - 无效的流 header : EFBFBDEF when converting object from byte string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46818958/
我正在开发一个 java web 应用程序,我正在使用类似 maven 的项目管理工具,现在我对这个问题很着迷。我尝试从我的应用程序构建一个 jasper 报告,该报告由我在 src/main/res
我在 Mavenized Eclipse 项目中有一个简单的 Web 应用程序。我的 pom.xml 包含一些将 Google 的 appengine-maven-plugin 添加到构建插件的行。
我正在尝试使用命令准备带有依赖项的 maven-jar, maven-assembly-plugin jar-with
我正在尝试将 ArrayList 对象转换为字节字符串,以便它可以通过套接字发送。当我运行此代码时,它会正确转换为字符串,但当我尝试将其转换回来时,出现异常“java.io.StreamCorrupt
我是一名优秀的程序员,十分优秀!