C# 如何将3D阵列保存为文本文件?
我想问一些关于将3D数组保存为文本文件的问题C# 如何将3D阵列保存为文本文件?,c#,C#,我想问一些关于将3D数组保存为文本文件的问题 using(FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Create, FileAccess.Write)) using(StreamWriter sw = new StreamWriter(fs, Encoding.Default)) { for (int i=0; i < simulate.ResultDat
using(FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Create, FileAccess.Write))
using(StreamWriter sw = new StreamWriter(fs, Encoding.Default))
{
for (int i=0; i < simulate.ResultData.GetLength(0); i++)
{
for (int j=0; j < simulate.ResultData.GetLength(1); j++)
{
sw.Write(simulate.ResultData[i,j] + "\t");
}
sw.WriteLine();
}
}
我有一个使用蒙特卡罗模拟来模拟光子在介质中移动的代码
这是将二维阵列数据保存到文本文件的代码
using(FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Create, FileAccess.Write))
using(StreamWriter sw = new StreamWriter(fs, Encoding.Default))
{
for (int i=0; i < simulate.ResultData.GetLength(0); i++)
{
for (int j=0; j < simulate.ResultData.GetLength(1); j++)
{
sw.Write(simulate.ResultData[i,j] + "\t");
}
sw.WriteLine();
}
}
使用(FileStream fs=newfilestream(saveFileDialog1.FileName+“.txt”,FileMode.Create,FileAccess.Write))
使用(StreamWriter sw=新StreamWriter(fs,Encoding.Default))
{
for(int i=0;i
我想知道我是否可以通过添加一句话将3D数组保存为文本文件,如
for (int k=0; k < simulate.ResultData.GetLength(2); k++)
for(int k=0;k
或者我需要在代码中添加其他信息
谢谢。您可以在文本文件中“保存”任何对象。这称为序列化
。不管它是一个3D数组,一个对象数组,每个包含对象数组,对象包含数组,等等
一个流行的.NET序列化软件包是NewtonSoft
。在努吉寻找它
您可以将上面的所有复杂代码替换为:
File.WriteAllText(saveFileDialog1.FileName, JsonConvert.SerializeObject(simulate));
这将适用于任何类型的
simulate
。为什么不试试?作为这里的一个新用户,也请拿着这个并阅读。我试过了。上面写着System.IndexOutOfRangeException.感谢您的回复。你的意思是我可以用你的一句话代码来更改我上面的所有代码吗?是的,这完全正确,除非你需要符合其他格式,那么是的,你可以用那行代码来替换你的整个代码,反序列化就是JsonConvert.DeserializeObject(json)
我使用定义JsonConvert,并用您的代码更改了我的代码,但数据没有保存为文本文件。数据文件表示它不是受支持的格式。将图像和数据保存为文本文件的总代码为public void SaveImg(){if(saveFileDialog1.ShowDialog()==DialogResult.OK){imageBox1.image.Save(saveFileDialog1.FileName);然后是我在问题中提到的全部代码。我将问题的代码更改为您的代码。在我运行程序后,没有结果图像,只有一个不受支持的jpg文件。很抱歉,编写得很复杂,因为这是注释空间。