跨设备在相同的相对位置创建文件

时间:2015-04-01 22:42:44

标签: android filesystems device

我想将在一台Android设备上找到的文件的路径发送到其他Android设备,并在与之前设备相同的相对位置重新创建该文件。

没有关于品牌,型号,API级别或类似产品的任何保证。

我可以这样做吗?

基本上我想知道我是否可以使用某种类型的File.get * Path()而不做任何超级花哨的事情。

1 个答案:

答案 0 :(得分:0)

基本上,没有办法像调用File.java中的get * Path()函数一样完成此操作,但这里有一个可以做的通用算法。

一般算法:

  1. 确定设备A下文件所在的已知根目录。
  2. 将已知的根名称和规范路径发送到设备B
  3. 在设备B上,使用相对于已知根的路径创建文件。

    //assume these constants are accessible on device A and B
    public static String FILES_DIR = "f";
    public static String EXTERNAL_FILES_DIR = "e";
    
    //Device A:
    File f = new File(getFilesDir(), "test.txt");
    String canonicalPath = f.getCanonicalPath();
    Packet p = new Packe(FILES_DIR, canonicalPath);
    sendPacket(p, DEVICE_B);
    
    //Device B:
    Packet p = receivePacket();
    String token = p.getToken();
    String canonicalPath = p.getCanonicalPath();
    if (token.equals(FILES_DIR)) {
        File f = new File(getFilesDir(), relativizeToRoot(FILES_DIR, canonicalPath));
        writeFile(f);
    } else if (token.equals(EXTERNAL_DIR)) {
        File f = new File(getExternalFilesDir(), relativizeToRoot(EXTERNAL_FILES_DIR, canonicalPath));
    }
    
  4. 这通常是Google在备份可能在具有不同文件结构的设备上重新创建的文件时的做法http://androidxref.com/4.4.2_r2/xref/frameworks/base/core/java/android/app/backup/BackupAgent.java#315