// 读写文件,如果读出的字符非法则不写入新文件
但在调试中遇到如下问题,代码如下:FileStream fileStreamOld = new FileStream(fileNameOld, FileMode.Open);
FileStream fileStreamNew = new FileStream(fileNameNew, FileMode.Create);int iResult = 0;
while((iResult = fileStreamOld.ReadByte()) >= 0)
{
//FileStream fileStreamBackup = fileStreamOld; // A
FileStream fileStreamTemp = fileStreamOld;
int iTemp = fileStreamTemp.ReadByte(); // 加上这一句后会每隔一个字符写入新文件,也就是fileStreamTemp 的改变会影响到fileStreamOld,加上A,B两句不仅不能起到备份的作用而且三个变量都改变了,为何呢? 多谢!
string strSearch = iTemp.ToString();
if (strSearch.Equals("a"))
{
MessageBox.Show("Message");
}
fileStreamNew.WriteByte((Byte)iResult);
//fileStreamOld = fileStreamBackup; // B
}
fileStreamOld.Close();
fileStreamNew.Close();
但在调试中遇到如下问题,代码如下:FileStream fileStreamOld = new FileStream(fileNameOld, FileMode.Open);
FileStream fileStreamNew = new FileStream(fileNameNew, FileMode.Create);int iResult = 0;
while((iResult = fileStreamOld.ReadByte()) >= 0)
{
//FileStream fileStreamBackup = fileStreamOld; // A
FileStream fileStreamTemp = fileStreamOld;
int iTemp = fileStreamTemp.ReadByte(); // 加上这一句后会每隔一个字符写入新文件,也就是fileStreamTemp 的改变会影响到fileStreamOld,加上A,B两句不仅不能起到备份的作用而且三个变量都改变了,为何呢? 多谢!
string strSearch = iTemp.ToString();
if (strSearch.Equals("a"))
{
MessageBox.Show("Message");
}
fileStreamNew.WriteByte((Byte)iResult);
//fileStreamOld = fileStreamBackup; // B
}
fileStreamOld.Close();
fileStreamNew.Close();
不知道C#中是怎样处理 FileStream 变量的,请各位指点一下,多谢!
-----------
当然会影响了,fileStreamTemp 和fileStreamOld指向的是同一块内存,除非你把fileStreamOld中的数据copy到fileStreamTemp 中.
int j = i;
j = 20;
MessageBox.Show(i.ToString());一样。