c# - 如何使用 File.AppendAllText 并添加一个新行?
问题描述
public static void Save(string saveString)
{
File.AppendAllText(SAVE_FOLDER + "/" + "savegame.txt", saveString);
}
该方法被调用两次甚至更多次,并且每次都使用另一个 saveString。保存文件的内容是这样的:
{"objects":[{"Key":"367f6ac2-6fd3-4c99-91e5-cc335a104ac4","Value":"{\"s1\":false}"}],"instanceID":0,"position":{"x":8.140000343322754,"y":0.0,"z":0.0},"scaling":{"x":1.0,"y":1.0,"z":1.0},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}}{"objects":[{"Key":"ecb45f8e-463c-4fe3-a436-5d836165bcce","Value":"{\"s1\":false}"}],"instanceID":0,"position":{"x":-11.229999542236329,"y":0.0,"z":8.920000076293946},"scaling":{"x":1.0,"y":1.0,"z":1.0},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0}}
我想把它格式化成更好看的东西,也许在每个字符串之间添加一个空行?还是其他格式?
这就是我用 json 保存它的方式:
public void Save()
{
SaveObject saveObject = new SaveObject();
for (int i = 0; i < objectsToSave.Count; i++)
{
var x = objectsToSave[i].GetComponents<Component>();
var y = x.Where(component => component is IStateQuery).ToList();
List<KeyToValue> myObjects = new List<KeyToValue>();
foreach(var z in y)
{
var w = z as IStateQuery;
myObjects.Add(new KeyToValue(w.UniqueId.ToString(), w.GetState()));
}
saveObject.position = objectsToSave[i].position;
saveObject.scaling = objectsToSave[i].localScale;
saveObject.rotation = objectsToSave[i].rotation;
saveObject.objects = myObjects;
string json = JsonUtility.ToJson(saveObject);
SaveSystem.Save(json);
}
}
但我不喜欢文件中内容的格式。
我试图添加 Environment.NewLine :
File.AppendAllText(SAVE_FOLDER + "/" + "savegame.txt" + Environment.NewLine, saveString);
但这给了我错误:
ArgumentException:路径中有非法字符。
解决方案
我认为您的修复可能就像这样简单:
File.AppendAllText(SAVE_FOLDER + "/" + "savegame.txt" , Environment.NewLine + saveString);
// or even better at the end
File.AppendAllText(SAVE_FOLDER + "/" + "savegame.txt" , saveString + Environment.NewLine);
您正在将新行添加到文件名中,它确实无效。在您的内容之前或之后添加它,您会做得很好。
顺便说一句,文件的内容不是有效的 json。虽然每一行都是,但总文件不是因为以下语法无效
{}
{}
如果你希望它全部成为一个 JSON 对象,你将需要这样的东西
[
{},
{}
]
推荐阅读
- ios - 具有相同 bundleID 的应用程序将具有相同的沙盒?
- java - 有没有办法使用 maven api 将 maven 项目打包到 jar 中?
- angular - 如何防止 angular-4 应用程序中的点击劫持攻击?
- javascript - AJAX 调用后 onload 不工作
- git - 在推入 Golang 之前运行测试
- python - 如何从 div 标签中提取强数据?
- windows - 是否可以在不链接到 c 库且不使用 ExitProcess() 的情况下从汇编代码创建 Windows exe?
- image - 暴露图像的 Web 服务:ddl 还是 base64?
- java - Hibernate 生成带有多对一关联的额外左连接
- ms-access - MS 访问 - 总和