试图找到内部存储数据的文件路径

时间:2017-04-25 17:34:09

标签: android location filepath

我创建了一个应用程序,允许用户创建一个笔记并保存。

我知道数据存储在应用程序的私有存储区域中,但我需要通过其文件路径实际查看存储它的文件。谁可以协助我如何做到这一点?我使用了FileOutputStream和FileInputStream方法

public class Utilities {

public static final String FILE_EXTENSION = ".bin";

public static boolean saveNote(Context context, Notes notes){
    String fileName = String.valueOf(notes.getDateTime()) + FILE_EXTENSION;

    FileOutputStream fos;
    ObjectOutputStream oos;

    try {

        fos = context.openFileOutput(fileName, context.MODE_PRIVATE);
        oos = new ObjectOutputStream(fos);
        oos.writeObject(notes);
        oos.close();
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
        return false; //tell the user something went wrong
    }
    return true;
}

public static ArrayList<Notes> getSavedNotes(Context context) {
    ArrayList<Notes> notes = new ArrayList<>();

    File filesDir = context.getFilesDir();
    ArrayList<String> noteFiles = new ArrayList<>();

    for(String file : filesDir.list()) {
        if(file.endsWith(FILE_EXTENSION)) {
            noteFiles.add(file);
        }
    }

    FileInputStream fis;
    ObjectInputStream ois;

    for(int i = 0; i < noteFiles.size(); i++) {
        try{
            fis = context.openFileInput(noteFiles.get(i));
            ois = new ObjectInputStream(fis);

            notes.add((Notes)ois.readObject());

            fis.close();
            ois.close();



        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
            return null;

        }
    }

    return notes;

}

public static Notes getNoteByName(Context context, String fileName) {
    File file = new File(context.getFilesDir(), fileName);
    Notes notes;

    if(file.exists()) {
        FileInputStream fis;
        ObjectInputStream ois;

        try {
            fis = context.openFileInput(fileName);
            ois = new ObjectInputStream(fis);

            notes = (Notes) ois.readObject();

            fis.close();
            ois.close();

        } catch(IOException | ClassNotFoundException e){
            e.printStackTrace();
            return null;
        }

        return notes;
    }

    return null;
}

public static void deleteNote(Context context, String fileName) {
    File Dir = context.getFilesDir();
    File file = new File(Dir, fileName);

    if(file.exists()) {
        file.delete();
    }
}

}

2 个答案:

答案 0 :(得分:0)

文件变量有一个名为&#34; getAbsolutePath&#34;的方法。这将为您提供文件的路径

例如,当您将变量声明为File:

File filesDir = context.getFilesDir();

然后您可以使用此方法获取如下文件路径:

filesDir.getAbsolutePath();

答案 1 :(得分:0)

您将无法在设备上看到该文件,因为它存储在应用程序的内部存储器中。 只有您的应用程序才能访问该文件。

要想象/浏览该文件,您需要有根设备。 Android studio具有文件浏览器的功能, 工具菜单&gt; Android&gt; Android设备监视器 但是你可以看到公共文件夹结构。

Mahmood提供的答案是正确的。 要检索文件路径,可以使用以下功能。

File filesDir   = context.getFilesDir();
String filePath = filesDir.getAbsolutePath();

所有文件都将存储在该位置。

希望这个答案可以帮到你。