读取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
相关产品推荐
相关产品推荐

