使用Base64加密时,报错:open failed: ENOENT (No such file or directory)

跟着视频自学HttpUrlConnection时,练习把图片缓存到系统cache目录下,

这么写没有问题,可以在cache下找到图片文件;

File file = new File(getCacheDir(), "test.png");

加密后就报错了

File file = new File(getCacheDir(), Base64.encodeToString(path.getBytes(), Base64.DEFAULT));
java.io.FileNotFoundException: /data/data/.../cache/aHR0cHM6Ly93d3cuYmFpZHUuY29tL2ltZy9iZF9sb2dvMS5wbmc/d2hlcmU9c3VwZXI=
 : open failed: ENOENT (No such file or directory)

报错部分代码如下,在创建输出流这一行报错了

if (code == 200) {
    InputStream in = conn.getInputStream();
    FileOutputStream fos = new FileOutputStream(file);
    int len = -1;
    byte[] buffer = new byte[1024];
    while ((len = in.read(buffer)) != -1) {
        fos.write(buffer, 0, len);
    }
        ...

请问各位大神问题出在哪里

1.先检查是不是因为读写权限问题造成的
2.在你使用file前应该判断下是否存在exists(),不存在你需要mkdir或mkdirs创建,

new File的第二个参数应该是文件名吧,猜测可能是Base64.encodeToString 这个方法中返回的字符串中包含/ ,
造成最后的路径是这样的: /cache/xxx/eee.png,
而xxx目录你又没有创建,所以最后报的No such file or directory