C#中使用StreamWriter向流中写入数据,需要System.IO命名空间。
首先为了让每次运行时都刷新文件内容,需要在Start的时候清除掉文件里已经有的东西。
void Start()
{
StreamWriter Output = new StreamWriter("D:/test.txt");
Output.Flush();
Output.Close();
Output.Dispose();//这几句是将文件内的内容全部清除掉,防止上一次运行的结果发生干扰
}
随后在update里面做写入的操作。
StreamWriter Output;
FileInfo fi = new FileInfo("D:/test.txt");
Output = fi.AppendText();//append为追加文本
Output.WriteLine(Angles[0].ToString());//writeline为写一行,write为直接写
Output.Close();
Output.Dispose();
注意写完以后一定要关掉文件流,要不然第二次new一个文件流的时候会被上一次的占用,导致无法写入。测试了一下,不Dispose暂时也没有发现什么问题,但是一定要close。
此外关于matlab实时读取txt的事情。事实证明,这样操作C#写入TXT后是实时保存的,用matlab去读也不会存在文件占用的问题。并且,matlab在读取文件的时候会自动分列,于是在写入的时候只需要在各个数据之间加上空格就可以了。matlab读出来是一个二维数组,然后再对这个数组做处理就行。
关于matlab实时绘图的问题。
while(1)
data=importdata('D:/test.txt');
y=data; %如果源文件内的数据为一个二维的矩阵,有多列,那么matlab会按照空格自动分列。
len=length(y);
x=1:len;
%subplot(2,1,1);plot(x,y);
%subplot(2,1,2);plot(x,y-1);
plot(x,y);
drawnow;
end
关键在于drawnow,立即绘图,就可以实现实时刷新图像。