Android无法向缓存写入临时.csv文件问题求助
解决Android创建CSV临时文件失败的问题
嘿,你遇到的这个错误其实是对File.createTempFile()的用法理解有个小偏差,我来帮你捋清楚并搞定它:
错误原因
你写的File.createTempFile("dir/activetickets", ".csv", getApplicationContext().getCacheDir())里,第一个参数"dir/activetickets"是文件名前缀,但它包含了路径分隔符/——createTempFile不会自动帮你创建子目录,它只会把整个字符串当作文件名的一部分处理,而你的缓存目录下本来就没有dir这个子文件夹,自然触发创建失败的报错。
修正方案
你需要先手动创建缓存目录下的dir子文件夹,再调用createTempFile指定这个子文件夹作为目标目录:
// 1. 获取缓存目录下的dir子文件夹对象 File cacheDir = getApplicationContext().getCacheDir(); File targetDir = new File(cacheDir, "dir"); // 2. 如果子文件夹不存在,创建它(mkdirs会自动创建所有缺失的父目录) if (!targetDir.exists()) { boolean isDirCreated = targetDir.mkdirs(); if (!isDirCreated) { // 这里可以添加日志或者处理目录创建失败的逻辑 return; } } // 3. 现在在目标子目录下创建临时CSV文件 File file = File.createTempFile("activetickets", ".csv", targetDir); FileWriter fw = new FileWriter(file); BufferedWriter writer = new BufferedWriter(fw); // 后续的写入逻辑...
额外小提示
createTempFile会自动在你指定的前缀后面加上随机数字(比如你原来的activetickets2582149955186383020.csv),这样能避免文件名冲突。如果你不需要这个随机后缀,也可以直接创建固定文件名的文件:
但这种方式需要你自己处理文件名重复的情况哦。File file = new File(targetDir, "activetickets.csv");
内容的提问来源于stack exchange,提问作者Froggy
相关产品推荐
相关产品推荐

