将“链接列表”保存到文件的单独行中



我会尽量保持简单。基本上,我有一个数据的链表,其中每个元素都在一个单独的行上。然而,当我试图将它保存到一个文件中时,它只是在一个长字符串中链接在一起。我需要它在不同的行上保存到文件中,因为我必须多次读取和保存到这个文件中,而且我读取文件的方式是,所有内容都必须在不同的线上。谢谢

将链接列表保存到文件的代码:

        String file_name = "output.txt";
        try {
                FileWriter fstream = new FileWriter(file_name);
                BufferedWriter out = new BufferedWriter(fstream);
                ListIterator itr = account.listIterator();
                while (itr.hasNext()) {
                    Account element = (Account) itr.next();
                    out.write(element + "n");
                }
                out.close();
                System.out.println("File created successfully.");
        } catch (Exception e) {
        }

创建链表的代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
public class Main extends javax.swing.JFrame implements ActionListener{
public static String readLine(BufferedReader br) throws IOException {
    String rl = br.readLine();
    if (rl.trim().length() > 2){
        return rl;
    }else return readLine(br);
}
public static void main(String[] args) {
    LinkedList<Account> account = new LinkedList<Account>();
    try
    {
        read(account, "output.txt");
    } catch (Exception e)
    {
        System.err.println(e.toString());
    }
        display(account);
    }
    public static void read(LinkedList<Account> account, String inputFileName) throws java.io.IOException
    {
        BufferedReader infile = new BufferedReader(new FileReader(inputFileName));
        while(infile.ready())
        {
            String username = readLine(infile);
            String password = readLine(infile);
            String email = readLine(infile);
            String name = readLine(infile);
            String breed = readLine(infile);
            String gender = readLine(infile);
            String age = readLine(infile);
            String state = readLine(infile);
            String hobby = readLine(infile);
            Account a = new Account(username, password, email, name, breed, gender, age, state, hobby);
            account.add(a);
            a.showList();
        }
        infile.close();
    }
    public static void display(LinkedList<?> c)
    {
        for (Object e : c)
        {
            System.out.println(e);
        }
    }

相反,

out.write(element + "n");

尝试

out.write(element);
out.newLine();

参考newLine()方法的javadoc:

写一个行分隔符。行分隔符字符串由系统属性行.separator,并且不一定是单个换行符('\n')。

因此,对于新行,\n似乎并不总是正确的。

使用PrintWriter(String fileName).println(...)。避免使用文字n

在您写入文件的每个Account之后都会有一个换行符。

    Account element = (Account) itr.next();
    out.write(element + "n");

我怀疑真正的问题在于Account.toString()方法。考虑到您阅读它的方式,您需要确保帐户对象的每个字段后面都有一个换行符。

相关内容

  • 没有找到相关文章

最新更新