博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Console“自服务”读取文件
阅读量:5124 次
发布时间:2019-06-13

本文共 1565 字,大约阅读时间需要 5 分钟。

记得以前在DOS中,执行一个命令既可以是在DOS控制符下手动敲入一句句命令,回车执行;又可以写一个批处理,然后批量执行。实际上在C#(或者)VB.NET中,Console也可以处理一个批文件的效果(批量从一个文件中读取结果)。

假设你有一个文本文件,里边存放以下内容:

Hello

Word

Wei_Dong

…………

那么你可以这样做——

[C#]

StreamReader sr = new StreamReader(new FileStream("d:\\log.txt",FileMode.OpenOrCreate)); Console.SetIn(sr); Console.WriteLine(Console.In.ReadToEnd());

[VB.NET]

Dim sr As New StreamReader(New FileStream("d:\log.txt", FileMode.OpenOrCreate)) Console.SetIn(sr) Console.WriteLine(Console.[In].ReadToEnd())

这里解释一下——Console.ReadLine默认是从键盘流中读取内容,通过WriteLine输出到屏幕;因此我们要做的是把“键盘流”改成自定义的你那个特定的StreamReader对象(第一句代码);然后通过SetIn方法改变Console读取流的位置从而使得Console从“文件流”中读取内容。设想一下如果有一批学生成绩要处理,你可以预先写入文本文件中,然后读出处理,再使用Console.WriteLine输出即可。

注意这里的窍门是——Console.In通过SetIn方法改变Reader的对象(从默认键盘流到文件流)。然后使用In(StreamReader的ReadToEnd())方法即可。实际上如果只有一句话,你完全可以使用Console.ReadLine(),因为它默认就是调用了In的ReadLine()方法

同样地,我们也可以联想到如果我不想要Console输出内容到屏幕,而是到其它某个地方(比如做日志记录等)。那么我们完全可以——

[C#]

StreamWriter sw = new StreamWriter(new FileStream("d:\\log.txt", FileMode.Append)); Console.SetOut(sw);      Console.WriteLine("1234567"+Console.Out.NewLine+"7654321"+Console.Out.NewLine); Console.Out.Close();

[VB.NET]

Dim sw As New StreamWriter(New FileStream("d:\log.txt", FileMode.Append)) Console.SetOut(sw) Console.WriteLine(("1234567" & Console.Out.NewLine & "7654321" & vbCr & vbLf & "1") + Console.Out.NewLine) Console.Out.Close()

注意:

1)换行输出用NewLine属性而不能用\n,因为C#中写入文本在Windows中一个“换行”等于(回车+换行)。你可以等效于“\r\n”(VB.NET中可以用vbCr+vbLf)。

2)输出流Out必须关闭或者调用Flush方法,不然无法写入文件,只是在缓冲区中。

转载于:https://www.cnblogs.com/ServiceboyNew/archive/2012/02/04/2337876.html

你可能感兴趣的文章
Django+xadmin打造在线教育平台(二)
查看>>
BZOJ 4836: [Lydsy1704月赛]二元运算 分治FFT
查看>>
域名、网站名、URL
查看>>
Docker常用命令
查看>>
mysql几种存储引擎介绍
查看>>
转-Android客户端和服务端如何使用Token和Session
查看>>
IOS第14天(2, Modal控制)
查看>>
删除确认代码
查看>>
刻意练习
查看>>
学习笔记13_第三方js控件&EasyUI使用
查看>>
Java变量的初始化问题探究
查看>>
DSU on tree——令人惊叹的想法
查看>>
javascript 闭包
查看>>
约瑟夫环问题
查看>>
c++ __int64
查看>>
IP封锁 (防火墙维护一张IP黑名单)
查看>>
【模板】trie树(字典树)
查看>>
JSON.stringify 语法实例讲解
查看>>
Python6 模块
查看>>
P3377 【模板】左偏树(可并堆)
查看>>