将字符串写入 .txt 文件,FileOutputStream 未按预期工作
Write string to a .txt file, FileOutputStream is not working as expected
我有一个应用程序,我想创建一个文本文件并在其中写入一些内容。我使用明确的意图 select 文件夹并创建文件,其中 mimeType=text/plain
private void createFile(String mimeType, String fileName) {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(mimeType);
intent.putExtra(Intent.EXTRA_TITLE, fileName);
startActivityForResult(intent, WRITE_REQUEST_CODE);
}
创建文件后,我使用 onActivityResult 写入文件
if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri uri = resultData.getData();
String path = uri.getPath();
File file = new File(path);
String filename = file.getName();
try {
verifyStoragePermissions(this); //method to access storage
FileOutputStream outputStream = openFileOutput(filename,MODE_PRIVATE);
outputStream.write("Message to write".getBytes());
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我的清单中也有许可
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
我没有收到错误,但我的文件中没有任何内容。有人可以帮忙吗?
ACTION_CREATE_DOCUMENT
给你一个 Uri
用于写入内容。 A Uri
不是文件.
openFileOutput()
是内部存储,不是外部存储,所以权限没有意义
openFileOutput()
与ACTION_CREATE_DOCUMENT
无关
不要通过getBytes()
写字符串
从战术上讲,将您的第二个代码块替换为:
if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri uri = resultData.getData();
try {
OutputStream os=getContentResolver().openOutputStream(uri);
PrintStream ps=new PrintStream(os);
ps.print("Message to write");
ps.flush();
ps.close();
} catch (Exception e) {
Log.e("Some identifying string", "Exception writing to "+uri.toString(), e);
}
}
我有一个应用程序,我想创建一个文本文件并在其中写入一些内容。我使用明确的意图 select 文件夹并创建文件,其中 mimeType=text/plain
private void createFile(String mimeType, String fileName) {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(mimeType);
intent.putExtra(Intent.EXTRA_TITLE, fileName);
startActivityForResult(intent, WRITE_REQUEST_CODE);
}
创建文件后,我使用 onActivityResult 写入文件
if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri uri = resultData.getData();
String path = uri.getPath();
File file = new File(path);
String filename = file.getName();
try {
verifyStoragePermissions(this); //method to access storage
FileOutputStream outputStream = openFileOutput(filename,MODE_PRIVATE);
outputStream.write("Message to write".getBytes());
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我的清单中也有许可
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
我没有收到错误,但我的文件中没有任何内容。有人可以帮忙吗?
ACTION_CREATE_DOCUMENT
给你一个Uri
用于写入内容。 AUri
不是文件.openFileOutput()
是内部存储,不是外部存储,所以权限没有意义openFileOutput()
与ACTION_CREATE_DOCUMENT
无关
不要通过
getBytes()
写字符串
从战术上讲,将您的第二个代码块替换为:
if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
Uri uri = resultData.getData();
try {
OutputStream os=getContentResolver().openOutputStream(uri);
PrintStream ps=new PrintStream(os);
ps.print("Message to write");
ps.flush();
ps.close();
} catch (Exception e) {
Log.e("Some identifying string", "Exception writing to "+uri.toString(), e);
}
}