openFileOutput
позволит вам только открыть личный файл, связанный с пакетом приложения данного контекста, для записи.Я не уверен, где находится файл, который вы пытаетесь записать.Я имею в виду полный путь.Вы можете использовать приведенный ниже код для записи в файл, расположенный в любом месте (если у вас есть разрешения).В примере используется внешнее хранилище, но вы должны иметь возможность изменить его так, чтобы оно записывалось куда угодно:
public Uri writeToExternalStoragePublic() {
final String filename = mToolbar.GetTitle() + ".html";
final String packageName = this.getPackageName();
final String folderpath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/" + packageName + "/files/";
File folder = new File(folderpath);
File file = null;
FileOutputStream fOut = null;
try {
try {
if (folder != null) {
boolean exists = folder.exists();
if (!exists)
folder.mkdirs();
file = new File(folder.toString(), filename);
if (file != null) {
fOut = new FileOutputStream(file, false);
if (fOut != null) {
fOut.write(mCurrentReportHtml.getBytes());
}
}
}
} catch (IOException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
return Uri.fromFile(file);
} finally {
if (fOut != null) {
try {
fOut.flush();
fOut.close();
} catch (IOException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
}
В приведенном вами примере попробуйте перехватить 'I0Exception`, у меня такое ощущение, что у вас его нетразрешение, где вы пытаетесь написать.
Счастливого нового года.