public class FileServices extends ApplicationContextProvider
如果应用程序使用 Google Play 扩展文件,则此类将首先尝试在这些扩展文件中获取资源文件,然后再在 APK 的“assets”目录中查找它们。默认情况下,此类假定这些扩展文件的命名方式遵循应用程序的包名和版本代码。如果它们使用不同的名称(例如不同的版本代码),则可以通过调用此类的 setMainExpansionFileName() 和 setPatchExpansionFileName() 方法来更改它。如果此应用程序使用 Corona 的内置 Google 许可功能,则 Corona 将根据 Google 许可服务器提供的名称自动设置这些文件名。
此类中的所有方法都是线程安全的,可以从任何线程调用。
构造器和说明 |
---|
FileServices(android.content.Context context)
创建一个对象,该对象提供对文件系统以及此应用程序在 APK 资源文件和 Google Play 扩展文件中的内部文件的轻松访问。
|
修饰符和类型 | 方法和说明 |
---|---|
boolean |
copyFile(File sourceFile, File destinationFile)
安全地将给定文件复制到给定目标,不会引发异常。
|
boolean |
copyFile(String sourceFilePath, String destinationFilePath)
安全地将给定文件复制到给定目标,不会引发异常。
|
boolean |
doesAssetFileExist(String filePath)
确定给定文件是否存在于应用程序的 assets 目录或其扩展文件中。
|
boolean |
doesResourceFileExist(String filePath)
确定给定文件是否存在于应用程序的资源目录中
|
File |
extractAssetFile(File assetFile)
将给定的资源文件解压缩到外部目录,以使其可供无法访问 APK 或其扩展文件中此应用程序的 assets 目录的原生 C/C++ API 使用。
|
File |
extractAssetFile(File assetFile, boolean overwrite)
将给定的资源文件解压缩到外部目录,以使其可供无法访问 APK 或其扩展文件中此应用程序的 assets 目录的原生 C/C++ API 使用。
|
File |
extractAssetFile(String filePath)
将给定的资源文件解压缩到外部目录,以使其可供无法访问 APK 或其扩展文件中此应用程序的 assets 目录的原生 C/C++ API 使用。
|
File |
extractAssetFile(String filePath, boolean overwrite)
将给定的资源文件解压缩到外部目录,以使其可供无法访问 APK 或其扩展文件中此应用程序的 assets 目录的原生 C/C++ API 使用。
|
AssetFileLocationInfo |
getAssetFileLocation(String filePath)
确定可以在哪里找到给定的资源文件。
|
byte[] |
getBytesFromFile(File file)
从给定文件中获取所有字节。
|
byte[] |
getBytesFromFile(String filePath)
从给定文件中获取所有字节。
|
File |
getExpansionFileDirectory()
获取此应用程序的“主”和“补丁”扩展文件应驻留的目录。
|
String |
getExtensionFrom(File file)
从给定文件中提取扩展名。
|
String |
getExtensionFrom(String fileName)
从给定的文件名中提取扩展名。
|
File |
getMainExpansionFile()
获取此应用程序的“主”扩展文件的路径和文件名。
|
String |
getMimeTypeFrom(android.net.Uri uri)
处理对给定 URI 处数据的 MIME 类型的请求。
|
File |
getPatchExpansionFile()
获取此应用程序的“补丁”扩展文件的路径和文件名。
|
boolean |
isAssetFile(String filePath)
确定给定的路径\文件名是否是 APK 或扩展文件中的资源文件。
|
void |
loadExpansionFiles()
加载此应用程序的扩展文件以便快速访问。
|
boolean |
moveFile(File sourceFile, File destinationFile)
安全地将给定文件移动到给定目标,不会引发异常。
|
android.content.res.AssetFileDescriptor |
openAssetFileDescriptorFor(File file)
通过 AssetFileDescriptor 安全地打开文件,不会引发异常。
|
android.content.res.AssetFileDescriptor |
openAssetFileDescriptorFor(String filePath)
通过 AssetFileDescriptor 安全地打开文件,不会引发异常。
|
InputStream |
openFile(File file)
安全地打开指向给定文件的输入流,不会引发异常。
|
InputStream |
openFile(String filePath)
安全地打开指向给定文件的输入流,不会引发异常。
|
void |
setMainExpansionFileName(String fileName)
设置要加载的“主”扩展文件的名称。
|
void |
setPatchExpansionFileName(String fileName)
设置要加载的“补丁”扩展文件的名称。
|
boolean |
writeToFile(InputStream inputStream, File destinationFile)
将给定输入流的字节安全地写入目标文件,不会引发异常。
|
getApplicationContext
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public FileServices(android.content.Context context)
context
- 对 Android 创建的上下文的引用,用于访问系统的目录。将此设置为 null 将导致引发异常。
public boolean isAssetFile(String filePath)
fileName
- 要检查其是否是资源文件的路径和文件名。不能为空或空字符串。如果给定文件是外部文件、null 或空字符串,则返回 false。
public boolean doesAssetFileExist(String filePath)
filePath
- 资源文件的相对路径。如果找不到该文件,则返回 false。
public boolean doesResourceFileExist(String filePath)
filePath
- 资源文件的相对路径(例如“drawable/image.png”)。如果找不到该文件,则返回 false。
public AssetFileLocationInfo getAssetFileLocation(String filePath)
请注意,资源文件被打包在 APK 文件或 Google Play 扩展文件中。此方法确定哪个包文件包含给定的资源,资源的字节在包文件中的位置,确定资源的 zip 条目名称(如果适用),以及资源是否被压缩。
如果资源未压缩,则可以使用此信息直接读取资源的字节以实现快速访问。如果需要从原生 C/C++ 代码或不支持 Android AssetManager 类的第三方库访问资源,这将特别有用。
如果找不到资源或给出无效参数,则返回 null。
public File getExpansionFileDirectory()
如果找不到扩展目录,则返回 null。
public void setMainExpansionFileName(String fileName)
如果 Google 授权返回扩展文件名,则应调用此方法。否则,系统将假定扩展文件名与此应用程序的包名和版本代码匹配。
例如:“main.1.my.package.name.obb”。
设置为 null 或空字符串以使用此应用程序的包名和版本代码使用默认扩展文件名。
public File getMainExpansionFile()
如果找不到扩展目录,则返回 null。
public void setPatchExpansionFileName(String fileName)
如果 Google 授权返回扩展文件名,则应调用此方法。否则,系统将假定扩展文件名与此应用程序的包名和版本代码匹配。
例如:“patch.1.my.package.name.obb”。
设置为 null 或空字符串以使用此应用程序的包名和版本代码使用默认扩展文件名。
public File getPatchExpansionFile()
如果找不到扩展目录,则返回 null。
public void loadExpansionFiles()
两次调用此方法将导致它关闭对上次加载的扩展文件的访问,然后重新加载当前扩展文件。此方法由 CoronaActivity 的 onCreate() 方法调用,以防现有扩展文件在应用程序进程在后台运行时被替换,这通常发生在测试期间。
public InputStream openFile(String filePath)
如果无法找到或访问给定文件,则返回 null。
public InputStream openFile(File file)
如果无法找到或访问给定文件,则返回 null。
public android.content.res.AssetFileDescriptor openAssetFileDescriptorFor(String filePath)
如果找不到该文件,则返回 null。
public android.content.res.AssetFileDescriptor openAssetFileDescriptorFor(File file)
如果找不到该文件,则返回 null。
public File extractAssetFile(String filePath)
如果给定文件已被提取,则此方法不会尝试再次提取它,除非此应用程序已在设备上重新安装。对于重新安装的情况,Corona 必须假设此应用程序可能已修改需要重新提取的资源。
如果无法找到给定的资源文件,则返回 null。
public File extractAssetFile(String filePath, boolean overwrite)
如果给定文件已被提取,您可以强制重写
如果无法找到给定的资源文件,则返回 null。
public File extractAssetFile(File assetFile)
如果给定文件已被提取,则此方法不会尝试再次提取它,除非此应用程序已在设备上重新安装。对于重新安装的情况,Corona 必须假设此应用程序可能已修改需要重新提取的资源。
如果无法找到给定的资源文件,则返回 null。
public File extractAssetFile(File assetFile, boolean overwrite)
如果给定文件已被提取,则此方法将尝试再次提取它
如果无法找到给定的资源文件,则返回 null。
public String getExtensionFrom(File file)
如果给定的文件名没有扩展名,则返回空字符串。
如果给定的参数为 null,则返回 null。
public String getExtensionFrom(String fileName)
如果给定的文件名没有扩展名,则返回空字符串。
如果给定的参数为 null 或空字符串,则返回 null。
public boolean copyFile(String sourceFilePath, String destinationFilePath)
public boolean copyFile(File sourceFile, File destinationFile)
如果目标文件已存在,将覆盖它。
如果目标目录不存在,将创建它。
public boolean writeToFile(InputStream inputStream, File destinationFile)
如果目标文件已存在,将覆盖它。
如果目标目录不存在,将创建它。
public boolean moveFile(File sourceFile, File destinationFile)
如果目标文件已存在,将覆盖它。
如果目标目录不存在,将创建它。
public byte[] getBytesFromFile(String filePath)
相对路径被假定为资源文件。
如果找不到该文件或应用程序没有读取权限,则返回 null。
public byte[] getBytesFromFile(File file)
如果文件具有相对路径,则假定它是资源文件。
如果找不到该文件或应用程序没有读取权限,则返回 null。
public String getMimeTypeFrom(android.net.Uri uri)