Android Files.move()在不同 Android 版本上执行的移动操作逻辑是不同的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Vindroid
V2EX    Android

Android Files.move()在不同 Android 版本上执行的移动操作逻辑是不同的?

  •  
  •   Vindroid 2022-08-30 16:52:07 +08:00 11587 次点击
    这是一个创建于 1137 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手上有两台盒子,一台 Android9 的,执行 java.nio.file.Files.move()移动大文件,是改文件指向,耗费就几百毫秒。另一台 Android11 的,执行 move()感觉是 copy+delete 的行为,花费了 30 多秒。使用 Runtime.exec 的结果也是一样,前者几百毫秒,后者 30 多秒。 操作的文件都是 /data/data/packagename/下的,不存在跨分区的原因。
    有人说是文件系统格式的问题,但是不支持 df -T 来查看,没看到到底是什么格式的。我对这一块是一点都不了解,有人知道能解答下吗?
    6 条回复    2022-08-30 17:48:06 +08:00
    mxT52CRuqR6o5
        1
    mxT52CRuqR6o5  
       2022-08-30 16:58:14 +08:00
    移动文件的 source 和 dest 都是 /data/data/packagename/吗?
    xuan_lengyue
        2
    xuan_lengyue  
       2022-08-30 17:12:53 +08:00
    估计是跨文件系统了
    AoEiuV020CN
        3
    AoEiuV020CN  
       2022-08-30 17:19:47 +08:00
    安卓 12 没有复现,
    /data/data 移到 /sdcard 是会跨分区的,
    要验证的话,直接调用 File.renameTo, 看看是不是失败了,move 的逻辑都是 rename 失败就 copy delete ,
    Vindroid
        4
    Vindroid  
    OP
       2022-08-30 17:33:32 +08:00
    @mxT52CRuqR6o5 @AoEiuV020CN 写错了,是从 /data/data/pkg1 -> /data/data/pkg2 ,这两个都是同一个用户和用户组,难道一个应用一个分区?试了下从 /data/data/pkg1/file2 -> /data/data/pkg1/file2 这种是没问题的
    mxT52CRuqR6o5
        5
    mxT52CRuqR6o5  
       2022-08-30 17:37:12 +08:00
    @Vindroid 真有可能是安卓版本问题,安卓的沙箱能力不是一直在加强嘛
    okakuyang
        6
    okakuyang  
       2022-08-30 17:48:06 +08:00
    应该是沙盒的原因,安卓 9 应该还没有强制文件沙盒,11 应该是强制沙盒的,如果你的 App 没有注册成文件管理器应用应该是不能操作到别的应用的数据的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3012 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 11:56 PVG 19:56 LAX 04:56 JFK 07:56
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86