工作中遇到的小问题的记录
①Android:open failed: EEXIST (file exists)
现象:
⑴在实现一个SD卡中的文件从一个路径拷贝到另一个路径的功能时,需要测试当SD卡空间不够的情况下的情况。所以我先让空间保证足够,进行了一次拷贝操作,OK,程序正常。
⑵然后我把手机连接电脑,通过电脑的资源管理器删除了拷贝的文件,并且让空间不够拷贝。再次进行拷贝操作,这次程序会抛Exception open failed: EEXIST (file exists)。
⑶然后我再次让空间足够拷贝,但是这次程序还是抛出Exception open failed: EEXIST (file exists)。
解决:
当时遇到这个问题,我通过电脑的资源管理器查看,SD卡目录下并没有抛出异常的这个文件。通过adb shell命令去查看,目录下也不存在这个文件。
这让我非常的蒙,这是个啥情况,明明SD卡的目录下没有该文件,为啥会说文件存在,因为我通过判断file.exists()方法判断,这个方法也给我false的返回。
查看异常堆栈,发现因为是new FileOutPutStream(new File)这句代码抛出的异常,又查是不是字节流没有close什么的。
总之各种改代码,发现还是抛这个异常。搞得我以为是代码出问题,但是换了一个新的SD卡的路径进行拷贝,程序又OK了。当时真是疯了。
晚上回去洗澡的时候,灵光一闪,我记得以前把手机刷机bin拷贝到SD卡中刷机的时候,明明已经通过电脑资源管理器删除了SD卡中旧的刷机bin,但是拷贝的时候还是会空间不足。查看大小,空间的确没有释放。
通过adb shell 查看的话,又不存在被删除的bin,搞得每次都要重新格式化SD卡。
后来我就通过adb shell命令删除SD卡中的旧的刷机bin,这次就正常了,新的刷机bin成功拷贝。
想到这里,我就觉得是不是这次的程序也是因为我是通过电脑的资源管理器删除拷贝的文件导致的问题。
第二天,我修改代码,当拷贝失败的时候,通过代码(file.dele