weixin_39959192
weixin_39959192
2020-12-08 20:50

创建文件失败

java
 CompressTools.newBuilder(mView.getContext())
                .setKeepResolution(true)
                .setBitmapFormat(Bitmap.CompressFormat.PNG)
                .setDestinationDirectoryPath(FileManager.getInstance().getPicDirPath())
                .setQuality(70)
                .build()
                .compressToFile(file, new CompressTools.OnCompressListener() {

                    public void onStart() {
                        Log.d("TAG", "onStart: ");
                    }


                    public void onFail(String error) {
                        Log.e(TAG, "onFail: " + error);
                    }


                    public void onSuccess(File file) {
                        LogUtil.d("压缩后" + file.length() / 1024);
                    }
                });

其中 FileManager.getInstance().getPicDirPath() 经log为/storage/emulated/0/Android/data/com.xxx.xxx/cache/pic 应无权限问题,已在该目录下成功写入多个文件

该提问来源于开源项目:lexluthors/CompressTools-Android

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • weixin_39654903 weixin_39654903 5月前

    报什么错?是不是没有配置动态权限?

    点赞 评论 复制链接分享
  • weixin_39959192 weixin_39959192 5月前

    报错log为: E/GifHeaderParser: onFail: 创建文件失败 有配置动态权限:Manifest.permission.WRITE_EXTERNAL_STORAGE

    点赞 评论 复制链接分享
  • weixin_39654903 weixin_39654903 5月前

    使用默认路径试试,就是demo中的,你看看demo里面的。如果可以,说明你传的路径有问题

    点赞 评论 复制链接分享
  • weixin_39959192 weixin_39959192 5月前

    改用demo的默认路径:

    
    FileUtil.getPhotoFileDir().getAbsolutePath()
    

    以后的代码(如下),依旧提示“ 创建文件失败”

    java
            Bitmap afterCut = cutPicture(bitmap);
            String afterCutPath = FileManager.getInstance().getEmptyPng(1);
            BitmapUtil.writeIntoFile(afterCut, afterCutPath);
            // 将裁剪完的bitmap保存到本地
    
            File file = new File(afterCutPath);
            LogUtil.d("仅裁剪" + file.length() / 1024);
    
            CompressTools.newBuilder(mView.getContext())
                    .setKeepResolution(true)
                    .setBitmapFormat(Bitmap.CompressFormat.PNG)
                    .setDestinationDirectoryPath(FileUtil.getPhotoFileDir().getAbsolutePath())
                    .setQuality(70)
                    .build()
                    .compressToFile(file, new CompressTools.OnCompressListener() {
    
                        public void onStart() {
                            Log.d("TAG", "onStart: ");
                        }
    
    
                        public void onFail(String error) {
                            LogUtil.d(FileUtil.getPhotoFileDir().getAbsolutePath());
    //                        Log.d(TAG, FileManager.getInstance().getPicDirPath());
                            Log.e(TAG, "onFail: " + error);
                        }
    
    
                        public void onSuccess(File file) {
                            LogUtil.d("压缩后" + file.length() / 1024);
                            mView.onBitmapHandleFinished(file.getAbsolutePath(), file.getAbsolutePath());
                        }
                    });
    

    log为:

    D/TAG: onStart: D/Log.d_default_tag: /storage/emulated/0/DCIM/Cherry

    重新审视代码,发现在压缩代码片段上面,还有一段代码,该代码有文件写入的操作(将bitmap写入文件) 并且检查得知,文件写入是没有问题,说明应该没有权限和路径的问题

    点赞 评论 复制链接分享

相关推荐