C# 关于文件的读写问题,高手帮助。

c# 的文件操作当然有文件之间的copy,但是我有一个问题,就是如果我用一个文件流读取一个文本文件,再写入另一个文件,就会出现数据丢失问题,请高手指教为什么会这样。
代码参考:
StreamReader sr=new StreamReader(@"C:\abc.txt");
StreamWriter sw=new StreamWriter(@"C:\abc-.txt");
string content;
while((content=sr.ReadLine())!=null)
{
sw.WriteLine(content);
}

这样下来,新文件(abc-.txt)总比老文件(abc.txt)要小。

第1个回答  2007-10-19
可能性一:字符编码不同。

中文XP的文本文件一般采用GB2312或GB18030编码而MS的C#默认采用Unicode32编码造成表达同一字符的字节数不同。

"C:\abc.txt"有可能采用GB2312编码。
而写入"C:\abc-.txt"的字符串确是Unicode32编码。

可能性二:
如果"C:\abc.txt"中存在空行(即两个换行符挨在一起),则依据"while((content=sr.ReadLine())!=null) "规则空行之后的内容将丢失。

建议改为
StreamReader sr = new StreamReader(@"C:\abc.txt");
StreamWriter sw = new StreamWriter(@"C:\abc-.txt");
sr.BaseStream.Position = 0;
sw.Write(sr.ReadToEnd());
简洁而又不丢失内容。
第2个回答  2007-10-18
StreamReader sr=new StreamReader(@"C:\abc.txt");
StreamWriter sw=new StreamWriter(@"C:\abc-.txt");
string content;
string result="";
while((content=sr.ReadLine())!=null)
{
result=result+content;
}
sw.Write(resutl);
sw.Flush();
sw.Close();
第3个回答  2007-10-18
在while语句后加一句
sw.Flush();本回答被提问者采纳
第4个回答  2007-10-18
sw.Close();

C#如何对文件进行读写
string str1 = "Good Morning!"; File.WriteAllText(@"c:\\temp\\test\\ascii.txt", str1); \/\/ 也可以指定编码方式 File.WriteAllText(@"c:\\temp\\test\\ascii-2.txt", str1, Encoding.ASCII);如果你有一个字符串数组,你要将每个字符串元素都写入文件中,可以用File.WriteAllLines方法:string[] ...

c#读写文件问题额
你可以用system.io名称空间下的stream或filestream 类实现 文件操作可不带扩展名

c#读取Config文件的问题
这错误要么就是你的sql配置文件路径不对,要么就是配置文件内部格式不正确。你只贴出了堆栈,没有贴出错误信息,看不出是什么错误。ibatis是开源的,可以下载源代码加入工程,一起调试,就知道哪错了。

求大神C#编程:打开并读取格式为“.day”的文件!!!求助!!!
建议先用ultraedit打开,把里面的结构搞清楚,例如那一段是股票代号,哪一段是名称,哪一段价格。第二步:读写流。读写二进制文件用System.IO.BinaryReader和System.IO.BinaryWriter类;你同样要分析数据格式。特别day文件里的日期,我是老早搞过,现在都忘了。里面的日期好像还要换算。day文件里存储的是...

求高手解答c#如何判断文件是否可读!
思路:对该文件进行移动、改名、打开等操作,如果出错,说明文件被独占。比如:try{File.Move(path,path);}catch(){return True;}

C# 配置文件读写模块 (简单高效)
配置文件的标准格式众多,我这里以XML文件为基础构建了配置文件读写系统。我已经将其制成了一个简单、高效的C#模块:QSconfig.dll。如果有相关需求或对该模块感兴趣,我将深入分享其功能和用法。XML的基本约定 XML的Node名称最好以字母、数字、下划线组合命名,并以字母开头。否则可能会发生Xml文件加载或...

C#用文本流生成文件的读写权限问题。
你的要求应该通过对这个文件的访问权限控制来实现。控制用户的访问权限,而不是控制用什么程序打开修改,实际上这个也没法控制。需要设置生成的文件的访问控制权限,使用File.SetAccessControl 方法,具体用法参见MSDN。

C#..WinForm中txt文件读取的问题,高手>>>
string [] str= File.ReadAllLines("d:\/tt.txt");str[0] 就是头 str[str.Length-1] 就是尾 除去头,取1,2 行数据 str[1],str[2]

C#编程小技巧-csv文件读写
在C#编程中,处理CSV文件的读写操作有时会十分实用。首先,你可以通过添加一个DataGridView控件来展示数据,但记得将其人工操作功能设置为false,以防止意外修改。然后,为了保持数据列的稳定,将所有列的排序模式设置为NotSortable,防止用户在视图中进行排序操作。为了提高代码的灵活性和重用性,你可以定义一...

VS2005_C#高手支招:try与catch读写文件时文件被锁定
看你的意思是尝试打开UserInformation.txt,如果文件不存在就创建它,这种情况应该是明确的判断这个文件是否存在,而不是用异常区投机取巧。if(File.Exists("UserInformation.txt")){ \/\/打开,读 using(FileStream read = new FileStream(@"UserInformation.txt", FileMode.Open, FileAccess.Read)){ usin...

相似回答