【问题标题】:The way to access sdcard files without relation to file name in Android applicationAndroid应用程序中与文件名无关的sdcard文件访问方式
【发布时间】:2012-09-15 06:13:11
【问题描述】:

即使在用户手动更改文件名后,是否有任何方法可以访问特定文件?

举一个具体的例子,我的设备在“/mnt/sdcard/myfile.png”中有一个文件,我的应用程序现在通过指示文件的绝对路径(即“/mny/sdcard/myfile .png”)。但是,如果用户更改文件名,这将失败。我想通过文件名修改后不变的常量标识符来获取文件。

【问题讨论】:

    标签: android file


    【解决方案1】:

    没有。我认为没有任何唯一文件标识可用。就像在 DOS(磁盘操作系统)和 Windows 中一样,它们使用 FAT 和 NTFS 来了解每个项目的媒体(HDD)的唯一信息。

    但我不认为你可以通过代码访问这种内部资源。所以没有其他方法可以访问没有文件名的文件。

    满足您要求的另一种方法是(我相信您的文件不是太大)。

    • 将文件的副本放在一个名为 backup 的文件夹中。
    • 创建一个 Android 服务,它会每隔一段时间在原始位置查找您的文件。
    • 对于定期间隔,您可以使用 AlarmManager 类。
    • 如果服务没有在原始位置找到文件(比如文件被删除或重命名),那么该服务将从backup文件夹复制文件并将其粘贴到原始文件夹。

    然而,这个逻辑应该是最后一个实现的选项,但好的部分是它 100% 满足您的要求。

    【讨论】:

    • 好的,我会设法不让用户更改文件名。谢谢你的建议!
    • @Ryo,我只是想了一下,有另一种方法可以满足您的要求。我会在晚上通知你。 :)
    • 我想知道是否可以使用 i-node 编号。非常感谢您的好意!!!
    • 在普通文件系统中,文件的路径是它的唯一标识符:)
    • @stoilkov,我知道那部分,但我要说的是很难找回那个唯一的号码。
    【解决方案2】:

    试试这个..

    您可以从 sdcard 中获取所有图像。

            Cursor cur = this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null,null);  
            startManagingCursor(cur);  
            cur.moveToFirst();
            while (cur.moveToNext()) {
                String str = cur.getString(cur.getColumnIndex(MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME));
                Log.e("#########",str);
            }
    

    【讨论】:

    • 感谢您的回答,但我想访问特定文件,而不是全部!
    猜你喜欢
    • 2014-03-07
    • 2012-05-31
    • 1970-01-01
    • 2016-08-30
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多