gpt4 book ai didi

java - 如何查看 Formatter 类创建的文件的输出

转载 作者:行者123 更新时间:2023-12-02 11:10:20 49 4
gpt4 key购买 nike

我编写了下面的代码,它创建了一个文件并完美地写入它,但我想在输出中查看文件的内容,但我只收到此消息:“java.io.BufferedWriter@140e19d”。我不明白!谁能向我解释一下为什么我收到此消息?以及我应该怎么做才能查看文件的内容?tnx。

这是我的代码:

package com.example.idea;

import java.io.FileNotFoundException;
import java.util.Formatter;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Formatter file = null;
Scanner sc =null;
try {
file = new Formatter("D:\\test.txt");
file.format("%s %s", "Hello", "World");
sc = new Scanner(String.valueOf(file));
while (sc.hasNext()){
System.out.println(sc.next());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
if (file != null) {
file.close();
}
if (sc != null) {
sc.close();
}
}




}

}

最佳答案

让代码正常工作所需的最小更改是替换该行

sc = new Scanner(String.valueOf(file));    // WRONG!!!

file.close();
sc = new Scanner(new FileInputStream("D:\\test.txt"));

毫无疑问,您在期待 String.valueOf(file)以某种方式让您访问文件 D:\test.txt内容 ,以这样的方式 Scanner然后就可以读取这些内容了。 一个Formatter写入数据;它无法读回数据。为此,您需要一个 FileInputStream .

因此,首先,通过关闭 Formatter 来完成对文件的写入。 :

file.close();

现在D:\test.txt与其他文件一样只是磁盘上的一个文件,现在可以使用 FileInputStream 打开以进行读取:

new FileInputStream("D:\\test.txt")

如果您愿意,可以将该流包装在 Scanner 中:

sc = new Scanner(new FileInputStream("D:\\test.txt"));

然后通过调用Scanner来处理数据方法。

这是示例的更彻底的修改版本,更清楚地突出了写入和读取操作之间的分离:

public class Main
{
private static void writeFile(String fileName) throws FileNotFoundException
{
Formatter file = null;
try {
file = new Formatter(fileName);
file.format("%s %s", "Hello", "World");
} finally {
if (file != null) {
file.close();
}
}
}

private static void readFile(String fileName) throws FileNotFoundException
{
Scanner sc = null;
try {
sc = new Scanner(new FileInputStream(fileName));
while (sc.hasNext()) {
System.out.println(sc.next());
}
} finally {
if (sc != null) {
sc.close();
}
}
}

public static void main(String[] args)
{
final String fileName = "test.txt";
try {
writeFile(fileName);
readFile(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

关于java - 如何查看 Formatter 类创建的文件的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50654736/

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