C#文件读写操作

我有这样一个问题,有些应用软件使用后,一般都要保存文件,以便下次使用,应用软件开发者都也会为保存的文件使用一个自定义的扩展名,该扩展名只有该应用软件才能打开,如offic... 我有这样一个问题,有些应用软件使用后,一般都要保存文件,以便下次使用,应用软件开发者都也会为保存的文件使用一个自定义的扩展名,该扩展名只有该应用软件才能打开,如offic软件的word保存的是*.doc文件,doc文件用记事本打开后是乱码,*.doc的文件用word打开才会正常显示内容。我想问的是这是怎么实现的,有没有一个简单的C# 2005的例子给传一下。或者现场解答一下!!
邮箱:381914029@qq.com
小弟弟为这个问题郁闷很久了?
谢谢。。
如*.pdf的文件要用pdf阅读器查看内容。。用记事本就不行了。。
展开
 我来答
Yew4
推荐于2016-09-10 · TA获得超过144个赞
知道小有建树答主
回答量:352
采纳率:0%
帮助的人:262万
展开全部
doc,pdf 都是二进制文件,所有的二进制文件都要用专用的工具才能识别其内容.
而你作为程序初学者可以不考虑这个问题,先学习读写文本文件就可以对付很多问题....

起初象doc,pdf这样的丰富格式内容(也包含其它内容,象声音,对象什么的)的用文件是无法表达的,所以才花费很大力气作了自己的文件格式.而最新的word 文件可以用文件来保存docx,当然这种保存下来的文件也是相当复杂的.

先学习读写文本文件就可以处理很多问题,随着对编程的深入会慢慢理解很多现在怎么也想不通的问题.
虎用95
2010-02-24 · TA获得超过431个赞
知道小有建树答主
回答量:182
采纳率:0%
帮助的人:71.5万
展开全部
因为记事本文件的格式很简单,而且通用,所以一般什么文字浏览器都能查看。而word、pdf等有很多自己的内部标签、标记等数据,以二进制格式保存,如果用不兼容的编辑器打开,会把这些数据也当做“文字”显示出来,你看到的就是乱码了。

例子很简单,例如你自己写一个文本编辑器,但在保存的时候采用二进制数据流写文件,且每个bit都+1,保存好的文件你用其他编辑器打开就看到乱码了。

或者你也可以自动检测回车换行符,碰到之后就用什么特殊的数据代替,甚至插入一些数据。。。。

只不过在你自己的编辑器读取文档的时候,要记得“解码”

这是最基本的原理了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独孤学
2010-02-24 · TA获得超过562个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:209万
展开全部
他们说的已经很充分了,我简单的阐述一下
每个格式的文件就是一种编码方式。你用c#自带的方法打开,就只能正常的打开txt。而你要打开word,你就必须知道word的文件是怎么编码的,然后针对式的写一读写的代码。
你说的pdf文件,一般pdf是加了密的,有的甚至把pdf都做成图片了。

不管他是什么格式的,只要你知道它的编码方式,就能够写出一个方法打开了。你试试在网上搜搜C#导入word,应该有写好的。可能会比较复杂,你直接把那个写好的类拿去用就是了,不一定非得搞懂是怎么回事。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
23...5@qq.com
2010-02-24 · TA获得超过141个赞
知道答主
回答量:136
采纳率:0%
帮助的人:144万
展开全部
楼主说的这些东西都有自己的一套编码方式,就像影片格式一样,rmvb里面的编码与avi是不同的,更具体的说,二者文件的文件头的二进制是不同,长度也是不同的,比如avi文件最开始的4个字节是一个四字符码‘RIFF’,但是rmvb不是,如果用rmvb的解码器来播放avi的话是播不了的,因为解码器不知道从哪里开始才是影音部分的数据(二进制),总而言之,这些都是要操作二进制的,如果我还解释不清楚的话,楼主可以去百度搜搜avi文件结构就可以看看这些的原理了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
银抒龙平春
2019-07-16 · TA获得超过1026个赞
知道小有建树答主
回答量:1562
采纳率:100%
帮助的人:7.4万
展开全部
◇c#
通用文件读写操作:
filestream
fs
=
file.open("文件名.扩展名",
filemode.openorcreate,fileaccess.read);
byte[]
bt=new
byte[fs.length];
fs.read(bt,
0,
bt.length);
string
text
=
encoding.default.getstring(bt);
fs.close();
filestream
fs
=
file.open("文件名.扩展名",
filemode.create,
fileaccess.write);
byte[]
bt=encoding.default.getbytes("要写入的字符串".replace("\n","\r\n"));
fs.write(bt,
0,
bt.length);
fs.close();
◇c#
行读写的操作:
filestream
fs
=
file.open("文件名.扩展名",
filemode.create,
fileaccess.write);
streamwriter
sw
=
new
streamwriter(fs,
encoding.getencoding("gb2312"));
sw.writeline("要写入的一行字符串".replace("\n","\r\n"));
sw.close();
fs.close();
filestream
fs
=
file.open("文件名.扩展名",
filemode.open,
fileaccess.read);
streamreader
sr=new
streamreader(fs,
encoding.getencoding("gb2312"));
string
line=sr.reandline();
sr.close();
fs.close();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式