Comments (10)
Can you provide the stack trace?
from junrar.
Can you provide sample code on how you use the library in that case? Are you using a stream or a file?
from junrar.
Can you provide sample code on how you use the library in that case? Are you using a stream or a file?
The source.rar size is 3.25G;
import com.github.junrar.Archive;
import com.github.junrar.rarfile.FileHeader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* @author chengpei
*/
public class RarUtil {
public static void main(String[] args){
String rarPath = "D:\\test\\source.rar";
String destinationPath = "D:\\test\\unrar\\";
try {
unrar(rarPath,destinationPath);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* unrar
* @param rarPath rar file path
* @param destinationPath unrar file path
*/
public static void unrar(String rarPath, String destinationPath) throws Exception{
try (FileInputStream inputStream = new FileInputStream(rarPath);
final Archive archive = new Archive(inputStream);
FileOutputStream outputStream = new FileOutputStream(destinationPath)){
while (true) {
FileHeader fileHeader = archive.nextFileHeader();
if (fileHeader == null) {
break;
}
archive.extractFile(fileHeader, outputStream);
}
} catch (Exception e){
throw e;
}
}
}
This is the stack trace:
com.github.junrar.exception.CorruptHeaderException
at com.github.junrar.Archive.readHeaders(Archive.java:345)
at com.github.junrar.Archive.setChannel(Archive.java:199)
at com.github.junrar.Archive.setVolume(Archive.java:811)
at com.github.junrar.Archive.<init>(Archive.java:149)
at com.github.junrar.Archive.<init>(Archive.java:178)
at com.vrv.vap.generator.util.RarUtil.unrar(RarUtil.java:35)
at com.vrv.vap.generator.util.RarUtil.main(RarUtil.java:21)
from junrar.
A recommendation, if you have a file on disk, it's better to use the methods that take a File
instead of an InputStream
, this will be more performant
from junrar.
A recommendation, if you have a file on disk, it's better to use the methods that take a
File
instead of anInputStream
, this will be more performant
改用文件之后可以正常解压,但是用FileInputStream的时候会报错,报错的方法是RandomAccessInputStream.readUntil的124行,当文件长度大于int的最大值时,变量length会变成负数。
from junrar.
I can't read Chinese, but i roughly get what you said using Google Translate.
When using a File
, junrar uses RandomAccessFile
which is part of JDK. There is no such thing for streams, so we have our own implementation of RandomAccessInputStream
which does caching in memory. It's less efficient to do caching in memory than to use the RandomAccessFile
.
from junrar.
I can't read Chinese, but i roughly get what you said using Google Translate.
When using a
File
, junrar usesRandomAccessFile
which is part of JDK. There is no such thing for streams, so we have our own implementation ofRandomAccessInputStream
which does caching in memory. It's less efficient to do caching in memory than to use theRandomAccessFile
.
When using FileInputStrean, RandomAccessInputStream will be wrong every time, you can debug it use my code, when the 'length' is reach Integer.MAX_VALUE, then the 'length' will be negative,so the thread can not read anything.
from junrar.
i fixed it, thanks for your analysis. But use File
instead of InputStream
if you can, you will have better perf.
from junrar.
I hope you can fix this in the BUG in next version as soon as possible. Thank you very much!
from junrar.
🎉 This issue has been resolved in version 7.5.4 🎉
The release is available on:
v7.5.4
- GitHub release
Your semantic-release bot 📦🚀
from junrar.
Related Issues (20)
- Get a specific inputstream from a rar containing multiple items. HOT 1
- Could the junrar project benefit from free security help?
- [BUG] Special characters are not recognized anymore HOT 8
- How to disable logging in System.err? HOT 2
- FileHeader times change depending on the current timezone HOT 9
- FileTime.fromMillis(getDateDos(fileTime)) is not working below android API 26 HOT 2
- [BUG]com.github.junrar.exception.UnsupportedRarV5Exception
- CrcErrorException HOT 4
- [BUG] Compress HOT 1
- [BUG]A carefully crafted RAR archive can trigger an infinite loop while parsing. HOT 10
- com.github.junrar.exception.CrcErrorException during extracting of archive HOT 2
- [BUG]A carefully crafted RAR archive can trigger an infinite loop while parsing HOT 21
- [BUG] NullPointerException when extracting solid archives HOT 6
- [BUG]com.github.junrar.exception.CorruptHeaderException: null HOT 2
- [BUG] Exception swallowed during initialization -- silently missing data we used to get in 7.4.1 HOT 11
- [BUG] "IllegalArgumentException: Pipe Size <= 0" with an empty file in the archive HOT 9
- Integration with Google oss-fuzz fuzzing service HOT 2
- Hrlp me HOT 1
- [BUG] Pom License link leads to 404 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from junrar.