首页 > 解决方案 > 在 java 中使用 Formatter 写入和读取文件时面临问题

问题描述

在这里,我可以在文件上写。但是当我试图读取我的文件时,它给了我“MyFile.txt”,但我的输出应该是“我 20 岁”我的代码有什么问题?

import java.util.*;
class main{
    public static void main(String[] args){

        Formatter fr;

        try{
            fr = new Formatter("MyFile.txt");

            fr.format("I'm %d",20);

            fr.close();

        }catch (Exception e){
            System.out.println("Error");
        }

        try {
            Scanner sc = new Scanner("MyFile.txt");
            while (sc.hasNext()){
                System.out.println(sc.next());
            }
             sc.close();
        }catch (Exception e){
            System.out.println("Error");
        }

    }
}

标签: java

解决方案


您将字符串文字传递给 Scanner 构造函数。

Scanner sc = new Scanner("MyFile.txt");

那是扫描字符串本身的构造函数。

您想将 File 对象传递给它:

Scanner sc = new Scanner(new File("MyFile.txt"));

注意:使用 Formatter 写入文件的工作方式是这样的,因为采用 String 的Formatter构造函数假定字符串是文件名。Scanner 构造函数假定字符串本身是输入,而不是文件名。


推荐阅读