- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在测试 IOUtils。我在将 InputStream 转换为字节数组时遇到问题:
private static final String LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
@Test
public void testInputStreamToByteArray() throws IOException {
byte[] expecteds = LOREM_IPSUM.getBytes();
byte[] actuals = org.apache.commons.io.IOUtils.toByteArray(new StringInputStream(LOREM_IPSUM));
assertArrayEquals(expecteds, actuals);
}
堆栈跟踪:
java.lang.AssertionError: array lengths differed, expected.length=56 actual.length=112
at org.junit.Assert.fail(Assert.java:91)
at org.junit.internal.ComparisonCriteria.assertArraysAreSameLength(ComparisonCriteria.java:72)
at org.junit.internal.ComparisonCriteria.arrayEquals(ComparisonCriteria.java:36)
at org.junit.Assert.internalArrayEquals(Assert.java:414)
at org.junit.Assert.assertArrayEquals(Assert.java:200)
at org.junit.Assert.assertArrayEquals(Assert.java:213)
at [...].testInputStreamToByteArray(HttpsTest.java:20)[...]
我不明白为什么不能通过测试。怎么了?
最佳答案
指定编码很重要。
您没有为要使用的库提供任何编码,因此将使用“默认”编码。我猜测,由于您的一个字节数组的大小是另一个字节数组的两倍,因此使用的一种编码是 UTF-16,另一种是 UTF-8/ASCII。
试试这个:
public void testInputStreamToByteArray() throws IOException {
byte[] expecteds = LOREM_IPSUM.getBytes("UTF-8");
byte[] actuals = org.apache.commons.io.IOUtils.toByteArray(new StringReader(LOREM_IPSUM), "UTF-8");
assertArrayEquals(expecteds, actuals);
}
关于java - String.getBytes() 和 IOUtils.toByteArray() 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533311/
BigInteger i = new BigInteger("1000"); Byte[] arr = i.toByteArray(); Contents of arr: [3, -24] 由于jav
我在下面的代码行中收到 OOM 错误。有办法解决吗?我尝试增加堆大小但没有用。 FileInputStream inputDoc = new FileInputStream(inputDoc1); b
我正在将 poi 工作簿写入 ByteArrayOutputStream,以便获取字节并在肥皂消息中发送它们。 获取ByteArrayOutputStream很好,但是调用.toByteArray()
我需要从发送到输出流的所有内容中获取字节数组。但我却得到了 4 个字节的垃圾。为什么? ByteArrayOutputStream byteArrayOutputStream = new ByteAr
我正在尝试为我重构的方法编写 Junit 测试,以确保该方法仍按预期运行。我注意到一些我无法弄清楚的奇怪行为。 为什么 Java ByteArrayOutputStream.toByteArray()
在我的 Android 应用程序中,我将数据存储在 ByteArrayOutputStream 中(目前最大约为 1 MB),我想将其传递给 DataOutputStream。 最明显的方法当然是调用
我在 android 上编写应用程序,它将 xml 文件发送到 PHP 服务器。这是我的代码: InputStream is = new FileInputStream(file); HttpClie
我尝试压缩超过 100Mb 的大型视频文件。 public static void compress(File input, File output) throws IOException {
我可能只是弄乱了原型(prototype)文件中的某些内容,但我似乎无法调用 toByteArray 函数。 使用 Java,proto 文件是用 protoc 编译的。 我在叫什么... BaseM
我正在将 bigints 转换为二进制、radix16 和 radix64 编码,并看到神秘的 msb 零填充。这是一个大整数问题,我可以通过去除零填充或做其他事情来解决吗? 我的测试代码:
我想将 Guid 存储在不支持 Guid/uniqueidentifier 数据类型的数据库中,因此我使用 .ToByteArray() 方法将 Guid 转换为字节数组。但是,此方法以一种奇怪的方式
我正在尝试优化下面的代码,是否可以直接将 ScreenCap 转换为字节数组,以便我可以跳过将其保存到内存中的步骤。 Process sh = Runtime.getRuntime().exec("s
我正在开发一个 spring boot 应用程序,需要使用 IOUtils 提供的 toByteArray 方法,但它已被弃用。在 spring boot 应用程序中使用 string.getByte
我正在使用 spring boot。我有一个使用字节数组返回文件的方法。当我试图返回 byteArray 时,我得到了这个错误。我的代码在下面给出- @GetMapping( value
我正在尝试在我的 Android 应用程序中编译此代码示例以具有加密/解密功能。我在这里找到了代码 http://apachejava.blogspot.it/2012/04/androidencry
我正在构建一个需要 Facebook 登录和身份验证的应用。 我在关注 https://developers.facebook.com/docs/android/getting-started#cre
当您在 .NET 中的 GUID 上调用 ToByteArray() 时,与 GUID 的字符串表示形式相比,结果数组中的字节顺序不是您所期望的。例如,对于以下表示为字符串的 GUID: 112233
这是我的代码 fragment : File file = new File("encryptedImageFileName"); byte[] encryptedBytes = null; try
我最近尝试从 inputStream 读取数据。 int length = getHeader("Content-Length"); byte[] buffer = new byte [length]
我正在试验具有随机值的 BigIntegers。 BigInteger bi1 = new BigInteger("365375409332725729550921208179070754913983
我是一名优秀的程序员,十分优秀!