java - 即使文件中有文本,BufferedReader readline 也会读取 null
问题描述
基本上,我正在尝试创建一个简单的数据库应用程序,并在每个学生条目中自动生成 ID。程序读取前一个最高 ID 并将其加 1 以创建下一个。但是,即使文本文档中有数字,使用 readLine 时 BufferedReader 仍会返回 null
我检查了我的 int 解析是否是问题,但我意识到它是 bufferedreader,方法是将 readline 保存到一个变量然后打印它,在那里我得到了 null 的结果。我还尝试使用不起作用的扫描仪文件读取,并检查了所有相关的类和方法以试图弄清楚。
此代码创建 topsid 文件并写入 0 以对其进行初始化,该文件被读取为 null
if(MiscProcesses.firstStartup() == false) //method that checks if these files exist
{
File topsid = new File("topsid.txt");
FileWriter fw = new FileWriter(topsid);
fw.write("0");
fw.close();
}
此代码负责读取文件并因此找到更高的 id 值
Student (String[] studata)
{
//checking highest SID
File topsid = new File("topsid.txt");
FileWriter fw = new FileWriter(topsid);
FileReader fr = new FileReader(topsid);
BufferedReader br = new BufferedReader(fr);
//checking high sid file and getting new sid
String test = br.readLine();
System.out.println(test+" <test"); <this ends up printing null
int sid;
sid = Integer.parseInt(test)+1;
System.out.println(sid);
fw.write(Integer.toString(sid));
this.id = sid;
...
br.close();
fr.close();
fw.close();
}
当我在第二个代码运行之前打开 topsid 文件时,一切都很好,文件包含一个零。我希望 bufferedreader 读取“0”,但它只是读取 null,当我在代码运行后打开文件时,里面的数据会被删除。
解决方案
FileWriter fw = new FileWriter(topsid);
FileReader fr = new FileReader(topsid);
BufferedReader br = new BufferedReader(fr);
创建FileWriter
这样的内容将在您阅读现有文件的内容之前对其进行踩踏。
如果你想从文件中读取一些东西,然后写回一些东西,在你读取它之后FileWriter
创建。
推荐阅读
- http - 使用带有 Go-chi 参数的中间件包装处理程序
- bazel - 找不到 @bazel_skylib//:bzl_library.bzl 的包
- flutter - JSON vs SharedPreferences 包
- python - 在 Djang 中为管理员设置“登录身份”按钮
- pytorch - “对于数据加载器中的 tokens_tensor、segments_tensors、att_mask、pos_id、trg:NameError:未定义名称‘data_loader’”
- javascript - 反应“列表中的每个孩子都应该有一个唯一的'关键'道具”
- javascript - 填充远程加载的 javascript 的文本框
- c# - 如何 Linq 平均
- php - 如何通过函数将自定义类添加到 woocommerce 购物车缩略图标签?
- angular - 推送记录到课堂