创建一个unsing openFileOutput()的文件,该文件对其他应用程序可见

时间:2017-03-10 02:32:51

标签: android

我使用openFileOutput()创建一个新的txt文件。我需要从其他应用程序(以及通过USB连接Android设备时从PC上看到该文件。我尝试使用.setReadable(true);但这看起来似乎没有。请告知我应该如何声明文件是可见的/公开的。

 try {
                   textIncoming.append("saving");
                   final String STORETEXT = "test.txt";
                   OutputStreamWriter out = new OutputStreamWriter(openFileOutput(STORETEXT, 0));
                   out.setReadable(true);
                   out.write("testing");
                   out.close();
               }
               catch (Throwable t) {
                   textIncoming.append("not saving");
               }

我已将程序更改为使用getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),但由于某种原因它返回路径/ storage / emulated / 0 / Documents,我甚至无法在设备上找到此文件夹。我看过使用ES文件浏览器的Android设备上的文件,但无法找到我试图创建的文件夹或文件(另外我想要这些在SD卡上的文档文件夹中,所以它似乎没有给我一个指向SD卡的指针,而不是创建文件夹,而不是创建文件。以下是我更新的代码,请指教

String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString();
                File myDir = new File(root + "/Saved_Receipts");
                myDir.mkdirs();
                Random generator = new Random();
                int n = 10000;
                n = generator.nextInt(n);
                String fname = "DRcpt-" + n + ".xml";
                textIncoming.append(root);
                File file = new File(myDir, fname);
                if (file.exists()) {
                    file.delete();
                }
                try {
                    FileOutputStream out = new FileOutputStream(file);
                    out.flush();
                    out.close();
                }
                catch (Exception e) {
                    e.printStackTrace();
                }

2 个答案:

答案 0 :(得分:0)

如果您希望任何人都能阅读它,请将其保存到SD卡。 这个Android文档应该告诉你你需要做什么。 https://developer.android.com/guide/topics/data/data-storage.html#filesExternal

答案 1 :(得分:0)

openFileOutput()documentation说:

  

打开私人文件

因此,除非您将其复制到另一个可见的目录,否则它创建的文件不会对其他应用程序可见。在这种情况下,您必须将数据保存在名为"外部存储"的内容中。与其他应用共享。使用此link处的代码。