Tôi đang thử nghiệm IOUtils. Tôi có vấn đề để chuyển đổi một InputStream vào một mảng byte:Sự khác nhau giữa String.getBytes() và IOUtils.toByteArray()?
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);
}
stacktrace:
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)[...]
Tôi không thấy lý do tại sao không vượt qua được bài kiểm tra. Chuyện gì thế?
Cảm ơn! Nhưng toByteArray không chấp nhận InputStream và String. Hai tùy chọn: 'IOUtils.toByteArray (StringReader mới (LOREM_IPSUM)," UTF-8 "); IOUtils.toByteArray (new InputStreamReader (là), "UTF-8"); ' – Falci
Ah, không nhận thấy rằng bạn đang sử dụng java.io.InputStream. Bạn sẽ cần sử dụng Reader hoặc cụ thể hơn StringReader: 'byte [] actuals = org.apache.commons.io.IOUtils.toByteArray (chuỗi StringReader mới (LOREM_IPSUM)," UTF-8 "); ' –
Nhận xét của tôi chỉ để làm rõ. Cám ơn bạn một lần nữa. – Falci