我有一个将一些单词写入文本文件的编写器。它在每一行打印一个单词,但是如果我停止应用程序并再次启动它旧单词就会消失,只有新单词存在。如何使词语不被覆盖?
json_last_error_msg()
答案 0 :(得分:3)
您正在使用StreamWriter
,每次都会覆盖该文件。
如上所述in the documentation:
path参数可以是文件名,包括通用命名约定(UNC)共享上的文件。如果文件存在,则会被覆盖;否则,将创建一个新文件。
您只需使用File.AppendAllText(...)
即可。在这种情况下,您甚至不需要使用StreamWriter
。
您可以将代码更改为
if (word != null) {
print(Application.persistentDataPath);
File.AppendAllText(Application.persistentDataPath + "/test.txt", s.NewLine + word.text);
}
所以你的完整代码看起来像这样:
using UnityEngine;
using System.Collections;
using System.IO;
using UnityEngine.UI;
public class ListScript : MonoBehaviour {
public InputField word;
void Start() {
}
public void NewList() {
if (word != null) {
print(Application.persistentDataPath);
File.AppendAllText(Application.persistentDataPath + "/test.txt", s.NewLine + word.text);
}
}
void OnLevelWasLoaded(int level) {
Debug.Log("I was here");
}
}
答案 1 :(得分:2)
听起来您想要将文本附加到文件的末尾而不是重新开始。以下是有关File.AppendText的更多信息。
答案 2 :(得分:-1)
您使用StreamWriter(字符串路径)构造函数来访问您的文件。
If you look up in MSDN你会看到如果“path”是一个文件,并且该文件存在,它将被覆盖。
解决此问题的一种方法是在File.Append模式下打开FileStream。在这种情况下,您根本不需要使用StreamWriter。完成后,您需要确保FileStream已正确处理,以防止资源泄漏。