Files
runelite/runescape-client/src/main/java/AccessFile.java
Lucwousin e7a1983158 rev185
2019-10-31 16:57:45 +01:00

140 lines
2.8 KiB
Java

import java.io.EOFException;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.SyncFailedException;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("mh")
@Implements("AccessFile")
public final class AccessFile {
@ObfuscatedName("a")
@Export("file")
RandomAccessFile file;
@ObfuscatedName("t")
@ObfuscatedGetter(
longValue = 6718173947913803383L
)
@Export("maxSize")
final long maxSize;
@ObfuscatedName("n")
@ObfuscatedGetter(
longValue = -8033630762525345541L
)
@Export("offset")
long offset;
public AccessFile(File var1, String var2, long var3) throws IOException {
if (var3 == -1L) {
var3 = Long.MAX_VALUE;
}
if (var1.length() > var3) {
var1.delete();
}
this.file = new RandomAccessFile(var1, var2);
this.maxSize = var3;
this.offset = 0L;
int var5 = this.file.read();
if (var5 != -1 && !var2.equals("r")) {
this.file.seek(0L);
this.file.write(var5);
}
this.file.seek(0L);
}
@ObfuscatedName("a")
@Export("seek")
final void seek(long var1) throws IOException {
this.file.seek(var1);
this.offset = var1;
}
@ObfuscatedName("t")
@ObfuscatedSignature(
signature = "([BIII)V",
garbageValue = "-1742010354"
)
@Export("write")
public final void write(byte[] var1, int var2, int var3) throws IOException {
if (this.offset + (long)var3 > this.maxSize) {
this.file.seek(this.maxSize);
this.file.write(1);
throw new EOFException();
} else {
this.file.write(var1, var2, var3);
this.offset += (long)var3;
}
}
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "-87"
)
@Export("close")
public final void close() throws IOException {
this.closeSync(false);
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(ZS)V",
garbageValue = "26740"
)
@Export("closeSync")
public final void closeSync(boolean var1) throws IOException {
if (this.file != null) {
if (var1) {
try {
this.file.getFD().sync();
} catch (SyncFailedException var3) {
}
}
this.file.close();
this.file = null;
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(B)J",
garbageValue = "-60"
)
@Export("length")
public final long length() throws IOException {
return this.file.length();
}
@ObfuscatedName("l")
@ObfuscatedSignature(
signature = "([BIIB)I",
garbageValue = "2"
)
@Export("read")
public final int read(byte[] var1, int var2, int var3) throws IOException {
int var4 = this.file.read(var1, var2, var3);
if (var4 > 0) {
this.offset += (long)var4;
}
return var4;
}
protected void finalize() throws Throwable {
if (this.file != null) {
System.out.println("");
this.close();
}
}
}