Код: Выделить всё
public int size(String teslaContentEntry) {
int result = 0;
try (InputStream stream = read(teslaContentEntry)) {
if (stream != null) {
try {
result = (int) min(Integer.MAX_VALUE, stream.skip(Long.MAX_VALUE));
} finally {
StreamUtil.closeSilently(stream);
}
}
} catch (IOException e) {
error("Can't extract " + teslaContentEntry + " from " + element, e);
}
return result;
}
// The code below is provided on request from comments. It can safely be ignored
public synchronized InputStream read(String name) {
if (disposed) {
throw new IllegalStateException("Disposed");
}
File file = files.get(name);
if (file == null) {
return null;
}
waitUntilExtracted(name);
try {
if (!file.exists()) {
extractFile(name);
waitUntilExtracted(name);
}
} catch (IOException e) {
error("Can't extract " + name + " from " + element, e);
}
if (file.exists()) {
try {
return getInput(file);
} catch (FileNotFoundException e) {
RcpttPlugin.log(e);
}
}
return null;
}
private void waitUntilExtracted(String name) {
synchronized (extractions) {
while (extractions.contains(name)) {
try {
extractions.wait(100);
} catch (InterruptedException e) {
RcpttPlugin.log(e);
}
}
}
}
protected BufferedInputStream getInput(File file)
throws FileNotFoundException {
return new BufferedInputStream(new FileInputStream(file));
}
Код: Выделить всё
Caused by: java.io.IOException: Invalid argument
at java.base/java.io.FileInputStream.skip0(Native Method)
at java.base/java.io.FileInputStream.skip(FileInputStream.java:444)
at java.base/java.io.BufferedInputStream.implSkip(BufferedInputStream.java:467)
at java.base/java.io.BufferedInputStream.skip(BufferedInputStream.java:446)
at org.eclipse.rcptt.core.persistence.BasePersistenceModel.size(BasePersistenceModel.java:390)
... 127 more
< /code>
Код вокруг довольно сложный, я не могу устранить гипотезу о одновременном доступе к файлу (например, для удаления). Но ошибка происходит слишком последовательно, чтобы предположить одновременную делецию.
Я предположил, что Skip () Что может вызвать такое исключение?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -max-value