Streamwriter 不会覆盖文件,继续追加或只写入第一行
Streamwriter will not overwrite file, keeps appending or writes only the first line
一直在查看其他人的答案,但似乎没有任何效果。
这是我的代码:
public void TaskOnClick() //getting multi-values
{
foreach (string inputJson in File.ReadLines("Assets/Text/multi-import.txt"))
{
string temperature = GetTemperatureByRegex(inputJson);
Debug.Log(temperature);
string filename = "Assets/Text/TEMP/multi-export.txt";
{
using (StreamWriter writeFile = new StreamWriter(filename, false))
{
writeFile.AutoFlush = true;
Console.SetOut(writeFile);
writeFile.WriteLineAsync(temperature.ToString());
}
}
}
}
我的想法是我的解析脚本获取我的数据,然后 streamwriter 将数据写入 txt 文件。问题是 streamwriter 一直附加 txt 文件而不是覆盖文件。
每当我尝试使用文件流时,它都会覆盖文件,是的,但是无论我尝试什么,都只会写入数据的第一行。
我的用户名不言而喻...
为什么不在打开流写入器之前删除文件?
if(File.Exists(filename)){
File.Delete(filename);
}
//here whatever you need to do next
你做错的是在循环中创建 StreamWriter
。如果您提供覆盖设置,它只会写入 1 行。
public void TaskOnClick() //getting multi-values
{
string filename = "Assets/Text/TEMP/multi-export.txt";
using (StreamWriter writeFile = new StreamWriter(filename, false))
{
foreach (string inputJson in File.ReadLines("Assets/Text/multi-import.txt"))
{
string temperature = GetTemperatureByRegex(inputJson);
Debug.Log(temperature);
writeFile.AutoFlush = true;
Console.SetOut(writeFile);
writeFile.WriteLine(temperature.ToString());
}
}
}
但是在 LINQ 的帮助下,有一种更短的方法可以做到这一点。
public void TaskOnClick() //getting multi-values
{
string filename = "Assets/Text/TEMP/multi-export.txt";
var tempratures = File.ReadAllLines("Assets/Text/multi-import.txt")
.Select(GetTemperatureByRegex).ToArray();
File.WriteAllLines(filename,tempratures); // it creates a new file or overwrites
}
我必须声明,如果输入文件太大,上述方法可能很危险。因为它将整个文件读入内存。
一直在查看其他人的答案,但似乎没有任何效果。
这是我的代码:
public void TaskOnClick() //getting multi-values
{
foreach (string inputJson in File.ReadLines("Assets/Text/multi-import.txt"))
{
string temperature = GetTemperatureByRegex(inputJson);
Debug.Log(temperature);
string filename = "Assets/Text/TEMP/multi-export.txt";
{
using (StreamWriter writeFile = new StreamWriter(filename, false))
{
writeFile.AutoFlush = true;
Console.SetOut(writeFile);
writeFile.WriteLineAsync(temperature.ToString());
}
}
}
}
我的想法是我的解析脚本获取我的数据,然后 streamwriter 将数据写入 txt 文件。问题是 streamwriter 一直附加 txt 文件而不是覆盖文件。 每当我尝试使用文件流时,它都会覆盖文件,是的,但是无论我尝试什么,都只会写入数据的第一行。
我的用户名不言而喻...
为什么不在打开流写入器之前删除文件?
if(File.Exists(filename)){
File.Delete(filename);
}
//here whatever you need to do next
你做错的是在循环中创建 StreamWriter
。如果您提供覆盖设置,它只会写入 1 行。
public void TaskOnClick() //getting multi-values
{
string filename = "Assets/Text/TEMP/multi-export.txt";
using (StreamWriter writeFile = new StreamWriter(filename, false))
{
foreach (string inputJson in File.ReadLines("Assets/Text/multi-import.txt"))
{
string temperature = GetTemperatureByRegex(inputJson);
Debug.Log(temperature);
writeFile.AutoFlush = true;
Console.SetOut(writeFile);
writeFile.WriteLine(temperature.ToString());
}
}
}
但是在 LINQ 的帮助下,有一种更短的方法可以做到这一点。
public void TaskOnClick() //getting multi-values
{
string filename = "Assets/Text/TEMP/multi-export.txt";
var tempratures = File.ReadAllLines("Assets/Text/multi-import.txt")
.Select(GetTemperatureByRegex).ToArray();
File.WriteAllLines(filename,tempratures); // it creates a new file or overwrites
}
我必须声明,如果输入文件太大,上述方法可能很危险。因为它将整个文件读入内存。