我如何写入一个文本文件行逐行(Unity)

本文关键字:文件 逐行 Unity 文本 一个 何写入 | 更新日期: 2023-09-27 18:02:37

public void savePreset(string doc)
{
    using (StreamWriter writetext = new StreamWriter(doc))
    {
        writetext.Write(player.transform.position.x + ", ");
        writetext.Write(player.transform.position.y + ", ");
        writetext.Write(player.transform.position.z + ", ");
        writetext.Write(player.transform.rotation.w + ", ");
        writetext.Write(player.transform.rotation.x + ", ");
        writetext.Write(player.transform.rotation.y + ", ");
        writetext.Write(player.transform.rotation.z);
        writetext.Close();
    }    
}

基本上这段代码从我的txt文件(doc)中读取,然后将我的球员旋转和位置的值写入这个txt文件。

但是,每次我运行这个savePreset时,它都会替换第一行数据。我如何保存里面的文本,使它保存一行,而不是取代第一行,每次我保存?

我如何写入一个文本文件行逐行(Unity)

Write()方法不编写尾随换行符,因此您想使用WriteLine()

来自Zohar Peled的链接:

    using (StreamWriter sw = File.AppendText(path)) 
    {
        sw.WriteLine("This");
        sw.WriteLine("is Extra");
        sw.WriteLine("Text");
    }   

你应该使用File.AppendText(string)方法来实例化StreamWriter,而不是直接创建一个StreamWriter对象。

如果您想在每次写入内容时添加空行,只需添加+ Environment。

在每行末尾换行或使用WriteLine(string)方法。
public void savePreset(string doc)
    {
        using (StreamWriter writetext = File.AppendText(doc))
        {
            writetext.Write(player.transform.position.x + ", " + Environment.NewLine );
            writetext.WriteLine(player.transform.position.z + ", ");
            ...
            ...
            writetext.Close();
        }
    }

使用System.IO命名空间中StreamWriterFile类中的WriteLineAppendText方法在Unity中写入内容。

请按照下面给出的链接来理解实现。

https://stackoverflow.com/a/69596704/7103882