mirror of
https://github.com/VibedByKaKi/alexandroid.git
synced 2026-11-13 17:37:16 +01:00
48 lines
1.4 KiB
Java
48 lines
1.4 KiB
Java
package com.facebook.soloader;
|
|
|
|
import java.io.Closeable;
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.nio.channels.FileLock;
|
|
import javax.annotation.Nullable;
|
|
|
|
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
|
|
/* loaded from: classes7.dex */
|
|
public final class FileLocker implements Closeable {
|
|
|
|
@Nullable
|
|
private final FileLock mLock;
|
|
private final FileOutputStream mLockFileOutputStream;
|
|
|
|
private FileLocker(File file) throws IOException {
|
|
FileOutputStream fileOutputStream = new FileOutputStream(file);
|
|
this.mLockFileOutputStream = fileOutputStream;
|
|
try {
|
|
FileLock lock = fileOutputStream.getChannel().lock();
|
|
if (lock == null) {
|
|
fileOutputStream.close();
|
|
}
|
|
this.mLock = lock;
|
|
} catch (Throwable th) {
|
|
this.mLockFileOutputStream.close();
|
|
throw th;
|
|
}
|
|
}
|
|
|
|
public static FileLocker lock(File file) throws IOException {
|
|
return new FileLocker(file);
|
|
}
|
|
|
|
@Override // java.io.Closeable, java.lang.AutoCloseable
|
|
public void close() throws IOException {
|
|
try {
|
|
FileLock fileLock = this.mLock;
|
|
if (fileLock != null) {
|
|
fileLock.release();
|
|
}
|
|
} finally {
|
|
this.mLockFileOutputStream.close();
|
|
}
|
|
}
|
|
}
|