ProxyCacheException: offset < 0: -2147476036
The code that caused the exception at com.danikula.videocache.file.FileCache.available(FileCache.java:46)
//old code : @Override public synchronized long available() throws ProxyCacheException { try { return (int) dataFile.length(); } catch (IOException e) { throw new ProxyCacheException("Error reading length of file " + file, e); } }
//change code @Override public synchronized long available() throws ProxyCacheException { try { long fileSize = dataFile.length(); return fileSize; } catch (IOException e) { throw new ProxyCacheException("Error reading length of file " + file, e); } }
this is error log: com.danikula.videocache.ProxyCacheException: Error writing 8192 bytes to java.io.RandomAccessFile@530f0a3 from buffer with size 8192. Version: 2.7.1 at com.danikula.videocache.file.FileCache.append(FileCache.java:73) at com.danikula.videocache.ProxyCache.readSource(ProxyCache.java:132) at com.danikula.videocache.ProxyCache.access$100(ProxyCache.java:19) at com.danikula.videocache.ProxyCache$SourceReaderRunnable.run(ProxyCache.java:187) at java.lang.Thread.run(Thread.java:919) Caused by: java.io.IOException: offset < 0: -2147476036 at java.io.RandomAccessFile.seek(RandomAccessFile.java:612) at com.danikula.videocache.file.FileCache.append(FileCache.java:69) at com.danikula.videocache.ProxyCache.readSource(ProxyCache.java:132) at com.danikula.videocache.ProxyCache.access$100(ProxyCache.java:19) at com.danikula.videocache.ProxyCache$SourceReaderRunnable.run(ProxyCache.java:187) at java.lang.Thread.run(Thread.java:919)
com.danikula.videocache.ProxyCacheException: Error writing 764 bytes to java.io.RandomAccessFile@530f0a3 from buffer with size 8192. Version: 2.7.1 at com.danikula.videocache.file.FileCache.append(FileCache.java:73) at com.danikula.videocache.ProxyCache.readSource(ProxyCache.java:132) at com.danikula.videocache.ProxyCache.access$100(ProxyCache.java:19) at com.danikula.videocache.ProxyCache$SourceReaderRunnable.run(ProxyCache.java:187) at java.lang.Thread.run(Thread.java:919) Caused by: java.io.IOException: offset < 0: -2147476036 at java.io.RandomAccessFile.seek(RandomAccessFile.java:612) at com.danikula.videocache.file.FileCache.append(FileCache.java:69) at com.danikula.videocache.ProxyCache.readSource(ProxyCache.java:132) at com.danikula.videocache.ProxyCache.access$100(ProxyCache.java:19) at com.danikula.videocache.ProxyCache$SourceReaderRunnable.run(ProxyCache.java:187) at java.lang.Thread.run(Thread.java:919)
备注:缓存失败的原因是 文件的类型 (long) 被强制转换成了(int)类型 ,int类型的长度不够,从而导致文件缓冲失败。