IllegalArgumentException:Invalid Byte
时间: 2023-10-12 18:02:52 浏览: 92
如果在解压.tar文件时遇到了"IllegalArgumentException: Invalid Byte"的异常,可能是由于文件编码不正确导致的。在处理文件时,我们应该指定正确的字符编码来读取和写入数据。
你可以尝试在读取和写入数据时指定正确的字符编码,如UTF-8。修改上面示例代码中的以下部分:
```java
try (InputStream inputStream = new FileInputStream(tarFile);
TarArchiveInputStream tarInput = new TarArchiveInputStream(inputStream, "UTF-8")) {
// ...
try (OutputStream outputStream = new FileOutputStream(outputFile);
Writer writer = new OutputStreamWriter(outputStream, "UTF-8")) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = tarInput.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
// ...
}
```
通过在`TarArchiveInputStream`构造函数中指定字符编码为UTF-8,并在`OutputStreamWriter`中指定字符编码为UTF-8,可以避免"IllegalArgumentException: Invalid Byte"异常。
如果上述修改仍然无法解决问题,请确保.tar文件本身没有损坏或使用了非标准的编码。你可以尝试使用其他工具或库来解压文件,或者检查.tar文件的内容和编码是否正确。
阅读全文