@aaron0309 我已经检查了我这边的代码。我不知道你那边发生了什么,但我在调试时发现,你总是使用 “File.getParentFile()”,它总是返回存在的文件夹,因此其他代码没有执行。我想这就是为什么字体没有被复制到设备文件夹的原因。有了下面的代码,我就能将字体复制到设备上,并得到正确的结果。
String rootDirFonts = getFontsFilePath();
File ttfFile = new File(rootDirFonts, "/simsun.ttc");
if (!ttfFile.exists()) {
try {
AssetManager assetManager = getAssets();
try (InputStream in = assetManager.open("simsun.ttc")) {
try (OutputStream out = new FileOutputStream(ttfFile)) {
copyFile(in, out);
}
}
//将assets 字体添加到项目私有文件夹中
//StorageUtil.saveInputStreamToFolder(in, rootDirFonts + "/simsunb.ttf");
} catch (Exception e) {
Log.e(TAG, "Failed to set", e);
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
}
protected String getFontsFilePath() {
String appFilePath = getFilesDir().getAbsolutePath() + "/MyFonts";
//通过 文件路径出啊年文件对象
File file = new File(appFilePath);
//判断父文件是否存在,如果不存在就创建一个新文件
if (!file.exists()) {
file.mkdirs();
}
return appFilePath;
}