change fileinputstream to filechannel

The restrict mode doesn't allow to have disk read from main thread. Some
apps enabled this check. The code in the dependencies of the
fileinputstream. This chagne switch to filechannel.

Test: presubmit
Bug: 356614910
Change-Id: Icf2175fe75ed1bfad4a048ead680b08e57d6c2ca
This commit is contained in:
Zhi Dou
2024-08-02 23:10:35 +00:00
parent a4007985ec
commit 8af83ccd50

View File

@@ -19,9 +19,10 @@ package android.aconfig.storage;
import android.compat.annotation.UnsupportedAppUsage;
import java.io.Closeable;
import java.io.FileInputStream;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
/** @hide */
public class StorageInternalReader {
@@ -69,16 +70,15 @@ public class StorageInternalReader {
// Map a storage file given file path
private static MappedByteBuffer mapStorageFile(String file) {
FileInputStream stream = null;
FileChannel channel = null;
try {
stream = new FileInputStream(file);
FileChannel channel = stream.getChannel();
channel = FileChannel.open(Paths.get(file), StandardOpenOption.READ);
return channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
} catch (Exception e) {
throw new AconfigStorageException(
String.format("Fail to mmap storage file %s", file), e);
} finally {
quietlyDispose(stream);
quietlyDispose(channel);
}
}