You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:02:27