我试图从我的Java程序中读取一个充当数据库的. txt文件。在通过TextEdit和使用FileWriter类运行程序之前,我已经写入了该文件Java但是在运行这些代码行后,程序仍然显示一个空数组。这是唯一造成问题的地方,当我使用ArrayList作为临时数据库时,我代码的其余部分(此处未显示)运行良好。有人能帮我找出为什么. txt文件总是空的吗?
String filePathName = "User Data.txt";
File userFile = new File(filePathName);
if (userFile.createNewFile()) {
System.out.println("Database has been successfully created");
System.out.println();
}
Scanner fileReader = new Scanner(userFile);
FileWriter fileWriter = new FileWriter(userFile);
Scanner userInput = new Scanner(System.in);
ArrayList<User> userInfo = new ArrayList<>();
boolean actionValid = false;
StringBuilder fileInput = new StringBuilder();
while (fileReader.hasNext()) {
fileInput.append(" ").append(fileReader.next());
}
String[] fileList = fileInput.toString().split(" ");
System.out.println(Arrays.toString(fileList));
你有
Scanner fileReader = new Scanner(userFile);
FileWriter fileWriter = new FileWriter(userFile);
因此,您的读者和作者都与userFile
联系在一起。虽然开始时这已经是一个坏主意(它们会相互干扰),但在这种情况下,它也会导致您的问题。
原因是因为new FileWriter(userFile)
会在文件开始写入之前截断文件。因此,对于您的fileReader
来说,该文件也是空的。
通过添加true
作为第二个参数(查看文档),可以在附加模式下打开FileWriter
,但更大的问题是读卡器和写卡器同时绑定到同一资源。
我没有看到您在代码片段中使用文件编写器
。因此,我建议您首先完成所有阅读并创建文件编写器
,当您实际需要它时,在您完全阅读完它之后。
如果您确实想同时读取和写入,则应在列表中准备新文件内容
最后一点,更喜欢使用NIO进行此类文件操作。它使用起来要简单得多,并且还可以确保您不会使流保持打开时间超过必要的时间。
这部分对我来说看起来很奇怪:
StringBuilder fileInput = new StringBuilder();
while (fileReader.hasNext()) {
fileInput.append(" ").append(fileReader.next());
}
String[] fileList = fileInput.toString().split(" ");
您正在读取文件并准备一个
StringBuilder
只是为了再次拆分结果。这非常浪费。您实际上应该在这里使用一个List
:
List<String> fileList = new ArrayList<>();
while (fileReader.hasNext()) {
fileList.add(fileReader.next());
}
有了NIO,您可以扔掉扫描仪,简化为:
List<String> fileList = Files.lines(userFile.toPath())
.collect(Collectors.toList());
嗨,这让我感到困惑,我正在尝试搜索我的文件中的选定数字,然后用该行的其余部分显示该数字,问题是我的程序似乎在我搜索它时返回第一行内容,但当我键入搜索它们时不会返回第二行或第三行 我的 txt 文件内容 我正在寻找的输出 当我键入2或3以查找项目时,我的程序不显示任何问题,我该如何解决它?
我有一个简单的代码。我把一个数除以它的最小因子,直到得到1。但是由于某些原因,存储因子的arraylist变空了。 我的答案应该是6+3,因为6/2(最小因子)+1因为3/3(最小因子)。 我的错误是总数+=current/numbers.get(0); 当我打印arraylist时,它显示[2,3],但随后变为空。这是编译器。
我正在尝试登录数据库。我有一个带有属性url、用户名和密码的bean;带有登录参数的html页面(带有url的组合框,以及用户名和密码的输入文本字段);和一个jsp来处理请求。当我运行jsp时,bean中的所有属性都保持为空。我已经通过调试器运行了它,我可以看到它们都是空的。 以下是相关的HTML: 以下是我的观点: 和JSP: 在尝试初始化B()时,我不明白为什么我的所有属性都为null。编辑:
我使用Eclipse用java编写了一个很酷的程序。当我在eclipse中运行它时,它完全按照预期工作。我将它导出为一个jar文件,这样我就可以使用Launch4j将它转换为一个可执行文件(.exe文件扩展名),我成功地完成了,但是现在当我试图打开可执行文件时,它说程序不兼容。我尝试在命令行编译代码,当我键入“Java计算器”试图运行程序时,它运行得很好。所以我的问题是为什么可执行文件不能工作?任
我已经彻底研究了所有的问题,但没有一个直接适用于我的问题。我正在循环访问用户ID数组并匹配它们以从我的firestore DB中获得一个用户。我会毫无问题地返回结果,但当我将其存储在状态数组中并运行控制台日志时,我的状态数组总是空的。第一个console.log工作并显示DB的结果。 请帮帮忙。
按下开始按钮后,它运行程序,但它不允许我使用右下角的退出按钮,我不知道为什么它会这样做。有人能帮忙吗。我希望它继续运行该程序,但仍然允许我使用该按钮,因此,如果我想中途退出,它将允许我。项目描述:“对于我的项目,我将使用python创建一个随机迷宫生成软件。我将创建一个网格呈现给用户。该软件将从左上角开始,然后创建迷宫,沿随机方向运行,最后在右下角结束。”