gpt4 book ai didi

java - 创建、写入和读取文件 java

转载 作者:行者123 更新时间:2023-12-02 05:16:01 28 4
gpt4 key购买 nike

我编写了一个程序,该程序应该创建一个文件,写入文件,然后从中读取。问题出在 readFile() 上,突然没有为 Formatter 定义 hasNext() ?我以为

while (file.hasNext()) {
String a = file.next();
System.out.println(a);

只要文件中有东西,就复制到a,然后打印a?我做错了什么?

import java.util.*;
import java.io.*;

class Oppgave3
{
public static void main(String[] args)
{

Kryptosystem a = new Kryptosystem();
a.createFile();
a.writeFile();
a.openFile();
a.readFile();
a.closeFile();

}
}

class Kryptosystem
{
public Kryptosystem(){}

Scanner keyboard = new Scanner (System.in);
private Formatter file;
private Scanner x;

public void createFile(){
try {
file = new Formatter("kryptFil.txt");
}
catch (Exception e) {
System.out.println("could not create file");
}
}

public void writeFile(){
System.out.println("what do you want to write");
String tekst = keyboard.nextLine();
file.format(tekst);
}

public void openFile() {
try {
x = new Scanner (new File("kryptFil.txt"));
}
catch (Exception e) {
System.out.println("something is wrong with the file");
}
}

public void readFile() {
while (file.hasNext()) {
String a = x.next();
System.out.println(a);
}
}

public void closeFile() {
file.close();
}

}

最佳答案

您声明:

where suddenly hasNext() is undefined for Formatter?

请查看Formatter API因为它会告诉你这个类没有 hasNext() 方法,并且你的 Java 编译器正确地告诉你同样的事情。同样,Scanner API会告诉你它实际上有你需要的方法。

您正在扫描仪中打开同一个文件,名为 x,这就是您想要用来从文件中读取的内容。所以解决方案是在 Scanner 变量上调用 hasNext():

while (x.hasNext()) { // x, not file
String a = x.next();
System.out.println(a);
}

注意,我不确定为什么您第二次打开该文件并将其放入 Formatter 对象中。请澄清您这样做的动机。我相信您希望用它写入文件,但您肯定不会尝试使用它从文件中读取,这就是您使用 hasNext() 试图做的事情。我认为您只是对使用哪个工具有点困惑。

关于java - 创建、写入和读取文件 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947833/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com