有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java写入文件不可恢复的sumbols

这是我的方法,他创建了新对象“predmet”。类“AddNewObject”返回我的predmet类型(名称、描述)

AddNewPredmet addnewpredmet = new AddNewPredmet();
listPredmet.add(AddNewPredmet.AddPredmet());
StorageInFile.savePredmet(listPredmet);

一切正常。但是我对写在文件中的结果有一个问题。输出文件中的符号不可读,如图所示-
¬н sr java.util.ArrayListxЃТ™Зaќ I sizexp w sr entity.PredmetїБц)Зя| L Descriptiont Ljava/lang/String;L PNameq ~ xpt testt testx

以下是写入文件的函数

public class StorageInFile {
    static void savePredmet(List<Predmet> listPredmet) {
       FileOutputStream fos = null;
       ObjectOutputStream oos = null;
       try {
         fos = new FileOutputStream("Predmet.txt");
          oos = new ObjectOutputStream(fos);
          oos.writeObject(listPredmet);
          oos.flush();
          oos.close();
       } catch (FileNotFoundException ex) {
         Logger.getLogger(StorageInFile.class.getName())
           .log(Level.SEVERE, "Нет такого файла", ex);
       } catch (IOException ex) {
         Logger.getLogger(StorageInFile.class.getName())
           .log(Level.SEVERE, "Не могу записать", ex);
      }
   }}

我怎样才能解决这个问题?我考虑了方法toString(),但我无法将此方法添加到此代码中


共 (2) 个答案

  1. # 1 楼答案

    尝试使用缓冲写入程序并使用支持UTF-8的查看器查看文件。您正在尝试使用假定为单字节编码的工具,例如Windows-125x编码。记事本就是这种工具的一个例子。因此,使用功能强大的查看器,您可以查看它

    此外,它还将有助于显示文件中的内容

  2. # 2 楼答案

    如果希望打印列表中每个PreMet实例的内容<&燃气轮机;那么你可以试试下面的方法

    • 在类Predmet中实现toString()方法
    • 请尝试将以下代码段写入文件

      FileWriter writer = new FileWriter("sample.txt");
      try {
        int size = listPredMet.size();
        for (int index =0; index < size; index++){
            writer.write(listPredMet.get(index).toString());
            writer.flush();
        }
      }catch(Exception e){
        e.printStackTrace();
      }finally{
        writer.close()
      }