Android6.0FileOutputStream写入文件问题

困惑一天的东西,最后在不经意间的替换解决了问题,记录一下以后估计还会遇到。

先描述下问题,在每次运行到

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))
的时候总会报文件打不开,或者就是文件未创建,至于log日志我也懒得还原给你们看了。为了确定到底是哪一步出现的问题我单独把
FileOutputStream fileOutputStream = new FileOutputStream(file);
拿了出来,果然是这里,在网上各种搜各种试大部分都说什么权限的问题,什么要动态加入权限,全都不管用,于是开始思考项目别的地方也有
这种操作为什么不拿那块代码来用呢,复制代码过来之后发现其实出错的原因是file的问题
有问题的获取方式:
	String filePath = 
Environment.getExternalStorageDirectory()
+ FooSysUtil.getInstance().getTimeStr("") + ".jpg";
没问题的获取方式:
	
String filePath = 
Environment
.getExternalStorageDirectory().getAbsolutePath()
写到这里忽然惊醒,我上面写的都是屎,如果我没有猜错的话以上陈述的问题根本不是问题的所在,想想报的错,不是打不开文件就是文件不存在,
所以真正的问题是想要写入文件必须先创建文件夹啊,看到代码才明白,不过还好调了一天调出来也是很棒的,还学到点小知识,下面一小段源码
File foder = new File(FilePathUtil.getSdcardPath() + "/JstImage/");
if (!foder.exists()) {
    foder.mkdirs();
}
String fileName = FilePathUtil.getSdcardPath() + "/JstImage/" + System.currentTimeMillis()
        + ".jpg";
FileOutputStream b = new FileOutputStream(fileName);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, b);
b.flush();
b.close();


FilePathUtil.getSdcardPath()是我封装的方法,返回值为 
Environment
.getExternalStorageDirectory().getAbsolutePath()
就这样吧能帮到你最好,帮不到你跟我也没关系,毕竟我就是做个笔记而已。233333333

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值