2011-03-14 18:46:15 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2011 The Android Open Source Project
|
|
|
|
*
|
2013-01-21 12:52:57 +00:00
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
2011-03-14 18:46:15 +00:00
|
|
|
*
|
2013-01-21 12:52:57 +00:00
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
2011-03-14 18:46:15 +00:00
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
2013-01-21 12:52:57 +00:00
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
2011-03-14 18:46:15 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
package com.android.inputmethod.latin;
|
|
|
|
|
2014-11-06 11:29:29 +00:00
|
|
|
import com.android.inputmethod.latin.common.FileUtils;
|
2013-12-13 08:09:16 +00:00
|
|
|
|
2011-03-14 18:46:15 +00:00
|
|
|
import java.io.File;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Immutable class to hold the address of an asset.
|
|
|
|
* As opposed to a normal file, an asset is usually represented as a contiguous byte array in
|
|
|
|
* the package file. Open it correctly thus requires the name of the package it is in, but
|
|
|
|
* also the offset in the file and the length of this data. This class encapsulates these three.
|
|
|
|
*/
|
2013-05-31 04:51:22 +00:00
|
|
|
public final class AssetFileAddress {
|
2011-03-14 18:46:15 +00:00
|
|
|
public final String mFilename;
|
|
|
|
public final long mOffset;
|
|
|
|
public final long mLength;
|
|
|
|
|
|
|
|
public AssetFileAddress(final String filename, final long offset, final long length) {
|
|
|
|
mFilename = filename;
|
|
|
|
mOffset = offset;
|
|
|
|
mLength = length;
|
|
|
|
}
|
|
|
|
|
2013-01-29 09:05:33 +00:00
|
|
|
public static AssetFileAddress makeFromFile(final File file) {
|
|
|
|
if (!file.isFile()) return null;
|
|
|
|
return new AssetFileAddress(file.getAbsolutePath(), 0L, file.length());
|
|
|
|
}
|
|
|
|
|
2011-03-14 18:46:15 +00:00
|
|
|
public static AssetFileAddress makeFromFileName(final String filename) {
|
|
|
|
if (null == filename) return null;
|
2013-01-29 09:05:33 +00:00
|
|
|
return makeFromFile(new File(filename));
|
2011-03-14 18:46:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public static AssetFileAddress makeFromFileNameAndOffset(final String filename,
|
|
|
|
final long offset, final long length) {
|
|
|
|
if (null == filename) return null;
|
2011-10-04 01:54:23 +00:00
|
|
|
final File f = new File(filename);
|
|
|
|
if (!f.isFile()) return null;
|
2011-03-14 18:46:15 +00:00
|
|
|
return new AssetFileAddress(filename, offset, length);
|
|
|
|
}
|
2013-12-13 08:09:16 +00:00
|
|
|
|
|
|
|
public boolean pointsToPhysicalFile() {
|
|
|
|
return 0 == mOffset;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void deleteUnderlyingFile() {
|
|
|
|
FileUtils.deleteRecursively(new File(mFilename));
|
|
|
|
}
|
2014-11-14 21:40:05 +00:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
return String.format("%s (offset=%d, length=%d)", mFilename, mOffset, mLength);
|
|
|
|
}
|
2011-03-14 18:46:15 +00:00
|
|
|
}
|