C#之I/O系统(五)
来源:互联网 发布:淘宝哪家银店真的吗 编辑:程序博客网 时间:2024/05/17 07:32
接着上面介绍的,在对文件进行读写操作时,我们还可以重定向标准的数据流。重定向运算符“<”和“>”是由操作系统提供的,因此如果操作系统支持I/O重定向,则可以重定向标准的输入输出,而不必更改程序。另外,Console类也为我们提供了三个重定向的方法,它们分别是Console.SetIn,Console.SetOut,Console.SetError,它们的函数定义如下:
static void SetIn(TextReader newIn);
static void SetOut(TextWriter newOut);
static void SetError(TextWriter newError);
例如:
StreamWriter log_out=new StreamWriter("log.txt");
Console.SetOut(log_out);
Console.WriteLine("This is the start of log file");
这时候,我们就会发现,输出并不是显示在控制台上的,而是输出到我们指定的log.txt文本文件中了。
到目前为止,我们不管是基于字符还是基于字节读取文件,都是按顺序进行存取的,但是,C#中提供给了我们随机读取文件的方法。在FileStream类中,定义了Seek()方法,函数的原型如下:
long Seek(long offset,SeekOrigin origin);
其中offset是指在origin指定位置后的offset个字节,SeekOrigin是个枚举类型,其值及对应的含义如下:
如果在查找的过程中出错,就会抛出IOException异常,如果底层的数据流不支持位置查找,则会抛出NotSupportedException异常。
除了上面介绍的定位方法外,我们还可以使用流类的Position属性,Position属性是一个读写属性,既可以获得当前位置,也可以更改当前位置。
上面我们介绍了两种实现TextReader和TextWriter类的基于字符的数据流StreamReader和StreamWriter,接下来我们讲述一下另外的两种数据流。
在执行基于内存的I/O操作时,使用字符串要比使用字节数组作为底层存储要简单的多,这时候我们可以使用StringReader和StringWriter类。StringReader继承了TextReader类,StringWriter继承了TextWriter类,它们可以使用基类定义的方法。
StringReader类的构造函数如下:
StringReader(string s);
s是要初始化的字符串。
StringWriter类的构造函数:
StringWriter();
StringWriter(StringBuilder sb);
StringWriter(IFormatProvider formatprovider);
StringWriter(StringBuilder sb,IFormatProvider formatprovider);
第一种构造函数创建一个空的StringWriter对象,第二种以一个StringBuilder对象初始化一个StringWriter对象。
最后需要提醒大家的是:除了上面所述的各种读取文件的方法外,File类还提供了很多的文件操作的静态方法,包含文件的创建,复制,移动,删除,加密,解密,设置和修改文件访问时间等等,这些方法操作起来更加简单。
- C#之I/O系统(五)
- C#之I/O系统(一)
- C#之I/O系统(二)
- C#之I/O系统(三)
- C#之I/O系统(四)
- C# I/O系统
- linux系统编程之文件与I/O(五):fcntl 函数与文件锁
- I/O流类库(五)
- linux系统编程之文件与I/O(五):文件的内核结构file和dup实现重定向
- linux系统编程之文件与I/O(五):文件的内核结构file和dup实现重定向
- 学习笔记I/O篇之五
- C#学习笔记之七(network I/O, Asynchonouse network I/O)
- 说说 Java I/O 系统之 I/O 流的典型用法(带示例)
- 说说 Java I/O 系统之标准 I/O
- java总结(之七)--Java I/O系统
- 操作系统(I/O系统)
- (转)五种I/O 模式
- 《操作系统》总结五(I/O管理)
- 【初学动态规划】之装箱问题
- iphone上实现HTTP server
- 关于const 与 引用 在函数传参的时候 区别
- session丢失看来,真的是session_start放首位之问题
- iis7.5应用程序池自动停止
- C#之I/O系统(五)
- hdu 2846 Repository
- Java 基本数据类型
- 异常
- Android Library 工程实现模块复用
- vs2010低版本.net framework 转换为高版本后报错Error FileTracker : error FTK1011
- 内存映射文件 ---大数据量共享
- 随着窗口变大,div的左边距也拉大
- Difference between CSSDAGENT and CSSDMONITOR