多线程下载用RandomAccessFile导致EROFS

如题,学习安卓使用多线程下载时,使用了RandomAccessFile可以快速Seek到文件某个位置,运行出现EROFS.

多线程下载用RandomAccessFile导致EROFS_第1张图片
EROFS

创建文件的代码如下:

RandomAccessFile rafile = new RandomAccessFile(     "IwfuQQMusic.exe", "rwd");

原因:

翻API找到原因,RandowAccessFile 构造方法有两个,一个传入File文件,一个传入文件名,

多线程下载用RandomAccessFile导致EROFS_第2张图片
RandowAccessFile

如果第一个参数直接传入文件名则默认在系统的用户文件夹下创建(user.dir),对于手机则要获取root权限。否则会报EROFS~(分析的不对请指出哈)

解决方案:

使用第一种构造方法指定好文件创建的地址:

多线程下载用RandomAccessFile导致EROFS_第3张图片
第一种构造器

代码如下:

RandomAccessFile file = new RandomAccessFile(new File(getFilesDir(), "IwfuQQMusic.exe"), "rwd");

收工~

你可能感兴趣的:(多线程下载用RandomAccessFile导致EROFS)