创建、写入和读取java文件

创建、写入和读取java文件,java,file-io,java.util.scanner,Java,File Io,Java.util.scanner,我已经做了一个程序,应该创建一个文件,写入它,然后从中读取。readFile()出现了问题,其中格式化程序的hasNext()未定义?我以为 while (file.hasNext()) { String a = file.next(); System.out.println(a); 只要文件中有东西,就可以复制到a,然后打印a?我做错了什么 import java.util.*; import java.io.*; class Oppgave3 { public stati

我已经做了一个程序,应该创建一个文件,写入它,然后从中读取。readFile()出现了问题,其中格式化程序的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();
  }

    }
你说:

格式化程序未定义hasNext()的位置

请看一下,因为它将向您显示该类没有
hasNext()
方法,并且您的Java编译器正确地告诉了您同样的事情。类似地,将向您显示它实际上具有您需要的方法

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

while (x.hasNext()) { // x, not file
  String a = x.next(); 
  System.out.println(a);
}
注意:我不确定您为什么再次打开该文件并将其放入格式化程序对象中。请澄清你的动机。我相信您希望用它来写入文件,但您肯定不会尝试使用它来读取文件,这正是您使用的
hasNext()
所要做的。我想你只是有点困惑,到底该使用哪种工具。

是的,而(x.hasNext(){工作起来很有魅力:)