Java 将字符串写入.txt文件,FileOutputStream未按预期工作

Java 将字符串写入.txt文件,FileOutputStream未按预期工作,java,android,fileoutputstream,Java,Android,Fileoutputstream,我有一个应用程序,我想创建一个文本文件并在其中写入内容。我使用显式意图选择文件夹并创建文件,其中mimeType=text/plain private void createFile(String mimeType, String fileName) { Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); inte

我有一个应用程序,我想创建一个文本文件并在其中写入内容。我使用显式意图选择文件夹并创建文件,其中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\u CREATE\u DOCUMENT
    为您提供一个
    Uri
    ,用于向其写入内容A
    Uri
    不是文件

  • openFileOutput()
    用于内部存储,而不是外部存储,因此权限是无意义的

  • openFileOutput()
    ACTION\u CREATE\u 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);
        }
    }
    
  • ACTION\u CREATE\u DOCUMENT
    为您提供一个
    Uri
    ,用于向其写入内容A
    Uri
    不是文件

  • openFileOutput()
    用于内部存储,而不是外部存储,因此权限是无意义的

  • openFileOutput()
    ACTION\u CREATE\u 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);
        }
    }
    

    要将其保存为.xml文件,我必须更改什么?我已经更改了mimeType,但没有更改work@IoannaDln:对不起,我不知道您所说的“将此另存为.xml文件”是什么意思。如果您询问如何向用户询问XML文件的位置,我希望MIME类型的
    text/XML
    会有所帮助,虽然不要求用户使用任何特定的文件扩展名。我不想创建一个.txt文件,而是想创建一个.xml文件,但我得到的是没有数据的空文件written@IoannaDln:我建议您提出一个单独的堆栈溢出问题,在该问题中,您提供一个显示您正在尝试的内容并详细解释,如何确定“获取空文件而不写入数据”。要将其保存为.xml文件,我需要做哪些更改?我已经更改了mimeType,但没有更改work@IoannaDln:对不起,我不知道您所说的“将此另存为.xml文件”是什么意思。如果您询问如何向用户询问XML文件的位置,我希望MIME类型的
    text/XML
    会有所帮助,虽然不要求用户使用任何特定的文件扩展名。我不想创建一个.txt文件,而是想创建一个.xml文件,但我得到的是没有数据的空文件written@IoannaDln:我建议您提出一个单独的堆栈溢出问题,在该问题中,您提供一个显示您正在尝试的内容并详细解释,您如何确定“获取空文件而不写入数据”。