【问题标题】:Storing String input in a file将字符串输入存储在文件中
【发布时间】:2018-07-18 08:19:03
【问题描述】:

好的,在有人开始抨击我问愚蠢问题之前,请注意,我已经用尽了所有其他选项 我知道,空手而归。不过,如果您愿意,请继续投票/报告此问题。

现在,对于那些关心

的人

我正在尝试从用户那里获取 String 输入并将其存储到文件 Text.txt 中,该文件将在当前工作目录中创建。 p>

下面是代码

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Scanner;


public class Encryption {

    public static void main(String[] args) throws Exception {

        System.out.println("Enter a String you wish to encrypt : ");
        new BufferedWriter(new FileWriter(".\\Text.txt")).write(new Scanner(System.in).nextLine());
        System.out.println("Done");
    }
}

我的问题是,文件在正确的目的地生成,但始终为空。我已经在多个 JDK 版本和不同的机器上尝试过它。仍然得到空白文本文件。

请告诉我,我做错了什么。

【问题讨论】:

  • 您尝试了哪些其他选项?
  • 在编写这样的oneliners之前,将它们一次分解为一个函数调用,并记录结果,以便您了解自己在做什么。
  • PrintWriter 和 BufferedWriter 是我知道的 2 种方式,试过了,操作没有区别,即将尝试序列化(我知道它错了,但我什么都没留下)

标签: java filewriter bufferedwriter


【解决方案1】:

你没有关闭 .close() BufferedWriter(然后会刷新最后一个缓冲区并关闭文件)。

但是,您可以以新的方式完成该任务:

    Files.write(Paths.get(".\\Text.txt"),
                Arrays.asList(new Scanner(System.in).nextLine()),
                Charset.defaultCharset());

否则,您将需要引入一个变量,而单线则不复存在。

【讨论】:

  • 完美,通过.close() 得到它。我不知道.close() 是生成操作的必要条件。我只是想通过不写.close() 将资源清理到gc()。谢谢你。真的很欣赏它
【解决方案2】:

我对您的代码进行了一些更改

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Scanner;


public class Encryption {

    public static void main(String[] args) throws Exception {

        System.out.println("Enter a String you wish to encrypt : ");
        String text = new Scanner(System.in).nextLine();
        BufferedWriter b = new BufferedWriter(new FileWriter(".\\Text.txt"));
        b.write(text);
        b.close();
        System.out.println("Done");
    }
}

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多