无法获取文本文件的URI

时间:2019-07-03 12:19:47

标签: java android firebase

我正在尝试制作一个应用程序,在该应用程序中,我可以从用户那里获取文本输入,并将其存储在文本文件中,然后将该文件上传到firebase,以便以后可以检索。

问题是我无法获取文件的正确URI。请帮助我获取URI。

这是代码

public class TextUpload extends AppCompatActivity {

    private void writeToFile(String data, Context context) throws FileNotFoundException {
        mediaFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
        if (!mediaFile.exists()) {
            mediaFile.mkdir();
        }
        byte[] data2 = data.getBytes();

        FileOutputStream f = new FileOutputStream(new File(mediaFile, "textfile.txt"));
        try {
            f.write(data2);
            f.flush();
            f.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        fileUri =  Uri.fromFile(mediaFile);
        Log.d("TAHH" , "URI = "+fileUri);
    }
}

这是我要存储在fileUri上的值

URI = file:///storage/emulated/0

[roid]

请帮助我获取突出显示的文件的URI。

1 个答案:

答案 0 :(得分:2)

主要问题是您正在读取mediaFile的路径,该路径是目录(而不是文件本身)。 mediaFile是所需文件的父目录。

因此,更改为:

mediaFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());


if (!mediaFile.exists()) {
    mediaFile.mkdir();
}
byte[] data2 = data.getBytes();

// Hold the reference to the file that you are writting
File txtFile = new File(mediaFile, "textfile.txt")
FileOutputStream f = new FileOutputStream(txtFile );

try {
    f.write(data2);
    f.flush();
    f.close();
} catch (IOException e) {
    e.printStackTrace();
}

// Here, use txtFile instead of mediaFile
fileUri =  Uri.fromFile(txtFile);
Log.d("TAHH" , "URI = "+fileUri);