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

读取txt文件时始终返回null值,代码问题排查求助

问题分析与修复方案

嘿,我一眼就发现你代码里的问题啦!你看这段循环代码:

while ((versionfile = br.readLine()) != null) { }

这个循环的逻辑是不断读取文件的每一行,直到读到文件末尾(此时br.readLine()返回null),最后versionfile会被赋值成这个null值,这就是你始终拿到null的根本原因!

给你两种修复方案,按需选择:

  • 如果你的chk.txt文件里只有一行内容,完全不需要循环,直接读取一行就行:
try {
    BufferedReader br = new BufferedReader(new FileReader(chkfile));
    versionfile = br.readLine(); // 直接读取第一行
    br.close();
} catch (IOException e) {
    e.printStackTrace();
}
  • 如果文件有多行,你想保留最后一行的内容,可以修改循环逻辑,用临时变量承接每一行,再赋值给versionfile:
try {
    BufferedReader br = new BufferedReader(new FileReader(chkfile));
    String tempLine;
    // 每次读取一行,把当前行赋值给versionfile,最后就保留了最后一行
    while ((tempLine = br.readLine()) != null) {
        versionfile = tempLine;
    }
    br.close();
} catch (IOException e) {
    e.printStackTrace();
}

另外还有两个小提醒:

  • 建议用try-with-resources语法,它会自动帮你关闭流,避免资源泄漏,代码更简洁安全:
try (BufferedReader br = new BufferedReader(new FileReader(chkfile))) {
    String tempLine;
    while ((tempLine = br.readLine()) != null) {
        versionfile = tempLine;
    }
} catch (IOException e) {
    e.printStackTrace();
    // 这里可以加自定义的错误处理,比如提示用户文件读取失败
}
  • 别忘了检查应用的存储权限!在Android 6.0及以上版本,需要动态申请READ_EXTERNAL_STORAGE权限;Android 10及以上版本,使用Environment.getExternalStorageDirectory()可能会有存储权限限制,必要时可以考虑改用应用专属存储路径。

内容的提问来源于stack exchange,提问作者techno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:10:28