Java 我无法将数据存储在文件中;相反,它以二进制形式存储

Java 我无法将数据存储在文件中;相反,它以二进制形式存储,java,Java,我想在创建的文件中存储数据,但我的代码在文件中存储二进制语言。有人能帮我储存一根绳子吗 import java.io.*; import java.util.*; class WriteToFileExample { public static void main(String args[]) { try { // Create file FileWriter fstream = new FileWriter("out.t

我想在创建的文件中存储数据,但我的代码在文件中存储二进制语言。有人能帮我储存一根绳子吗

import java.io.*;
import java.util.*;
class WriteToFileExample {
    public static void main(String args[]) {
        try {
            // Create file 
            FileWriter fstream = new FileWriter("out.txt");
            BufferedWriter out = new BufferedWriter(fstream);
            Scanner sc = new Scanner(System.in);
            System.out.println("enter name");
            int a = sc.nextInt();
            out.write(a);
            out.close();
        } catch (Exception e) {


            //Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }
    }
}

您正在使用Scanner.nextInt()输入字符串。更改:

int a = sc.nextInt()

更广泛的问题是,当您在BufferedWriter中使用“write(int)”方法时,您正在写入整数指定的字符。这意味着你在写任何ASCII字符,它由你输入的整数表示——例如,如果你在代码中输入“65”,你会得到一个大写字母a的文本文件,因为a是ASCII#065

以下是字符的ASCII值表:


正如你所看到的,前20个左右的字母和数字并不像你想象的那样。如果需要,可以尝试将其中一些字符的整数值输入到代码中,以查看其工作原理

将其写入字符串(写入(a+“”,0,1))。但是,对于您正在调用的
write
方法,可能有一个更简洁的解决方案。您需要一个名称,它通常是一个字符串,因为我们不按数字命名(我想),然后使用
nextInt
阅读它。迷人的!阅读本身不是问题。阅读
int
没有什么错,问题在于
int
是如何编写的。你是对的,但是如果有人仍然在使用Scanner类来做这类事情,那么我不确定Javadoc对“int指定要编写的字符”的描述有多大帮助。我编辑了答案以详细说明
String a = sc.next()