演示文件 I/O 操作

本文中的示例讲述基本的文件 I/O 操作。“分步示例”部分说明如何创建一个演示下列六种文件 I/O 操作的示例程序:

注意:如果要直接使用下列示例代码,请注意下列事项:

必须包括 System.IO 命名空间,如下所示:

using System.IO;
按如下方式声明 winDir 变量:

string winDir=System.Environment.GetEnvironmentVariable("windir");
按如下方式声明 addListItem 函数:

private void addListItem(string value){ this.listbox1.Items.Add(value);}
注意:可以直接使用下列语句,而不用声明和使用 addListItem 函数:

this.listbox1.Items.Add(value);"

读取文本文件

下面的示例代码使用 StreamReader 类读取 System.ini 文件。该文件的内容被添加到一个 ListBox 控件中。其中的 try...catch 块用于在文件为空时向程序发出警报。有多种方法可确定是否到达文件结尾;本示例使用 Peek 方法在读取下一行之前先检验该行。

StreamReader reader=new StreamReader(winDir + "//system.ini");

try

{

do

{ addListItem(reader.ReadLine()); }

while(reader.Peek() != -1); }

catch

{ addListItem("File is empty");}

finally

{ reader.Close(); }

写入文本文件

此示例代码使用一个 StreamWriter 类来创建一个文件并写入信息。如果已有一个现有文件,则可以用同样的方式打开它。

StreamWriter writer = new StreamWriter("c://KBTest.txt");

writer.WriteLine("File created using StreamWriter class.");

writer.Close(); this.listbox1.Items.Clear();

addListItem("File Written to C://KBTest.txt");

查看文件信息

此示例代码使用一个 FileInfo 对象来访问一个文件的属性。此示例中使用了 Notepad.exe。属性在 ListBox 控件中显示。

FileInfo FileProps =new FileInfo(winDir + "//notepad.exe");

addListItem("File Name = " + FileProps.FullName);

addListItem("Creation Time = " + FileProps.CreationTime);

addListItem("Last Access Time = " + FileProps.LastAccessTime);

addListItem("Last Write TIme = " + FileProps.LastWriteTime);

addListItem("Size = " + FileProps.Length);

FileProps = null;

列出磁盘驱动器

此示例代码使用 Directory 和 Drive 类列出系统上的逻辑驱动器。本示例的结果显示在 ListBox 控件中。

string[] drives = Directory.GetLogicalDrives();

foreach(string drive in drives)

{ addListItem(drive); }

列出子文件夹

此示例代码使用 Directory 类的 GetDirectories 方法获取文件夹列表。

string[] dirs = Directory.GetDirectories(winDir);

foreach(string dir in dirs)

{ addListItem(dir); }

列出文件

此示例使用 Directory 类的 GetFiles 方法获取文件夹列表。

string[] files= Directory.GetFiles(winDir);

foreach (string i in files)

{ addListItem(i); }

用户访问文件时可能会出现多种错误。文件可能不存在、可能在使用中,或者用户对试图访问的文件夹中的文件无访问权限。在编写代码和处理可能产生的异常时,将这些可能性考虑在内是很重要的。

原作者地址连接:http://blog.csdn.net/zhoufoxcn/article/details/1346256

如何在 Visual C# 中执行基本的文件 I/O的更多相关文章

  1. 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex

    开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...

  2. [转]如何在 Visual Studio 中使用 Git 同步代码到 CodePlex

    本文转自:http://www.cnblogs.com/stg609/p/3673782.html 开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framew ...

  3. 如何在Visual Studio中选择C++和C#的编译器版本

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何在Visual Studio中选择C++和C#的编译器版本.

  4. [译]如何在visual studio中调试Javascript

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  5. 如何在c#代码中执行带GO语句的SQL文件

      需要在C#代码中执行一个SQL文件的内容.遇到了两个问题: 1. 因为SQL文件中有"GO"语句,执行时报错"Incorrect syntax near 'GO'.& ...

  6. Spring Security 是如何在 Servlet 应用中执行的?

    Spring Security 是一个强大的认证和授权框架,它的使用方式也非常简单,但是要想真正理解它就需要花一时间来学习了,最近在学习 Spring Security 时有一些新的理解,特意记录下来 ...

  7. 在Visual Studio中开发Matlab mex文件,生成mexw64/mexw32

    csunking贡献,2015-9-22 1712 1.   概述 通过使用C/C++与Matlab混合编程,既可以享受到C代码快速执行的速度,又可以方便的使用Matlab众多的库函数和强大的绘图功能 ...

  8. Visual Studio 中使用万能头文件 #include <bits/stdc++.h>

    最近开始使用VS,之前用的DEV C++软件可直接使用 #include <bits/stdc++.h>  ,但VS中并没有,为了使用方便,可直接在VS中添加此头文件,方法如下: 1.在安 ...

  9. 如何在Visual Studio中开发自己的代码生成器插件

     Visual Studio是美国微软公司开发的一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等,且所写的目标代码适用于微 ...

随机推荐

  1. mesh之孔洞检测

    mesh之孔洞检测 图1 检测孔洞点 图2 检测孔洞点 图3 检测孔洞点 图4 细节

  2. Docker-----版本选择

    版本演变 17.03 版本以前 Docker CE 在 17.03 版本之前叫 Docker Engine, Docker Engine 的版本号范围: 0.1.0 ~ 1.13.1 17.03 版本 ...

  3. leetcode 509斐波那契数列

    递归方法: 时间O(2^n),空间O(logn) class Solution { public: int fib(int N) { ?N:fib(N-)+fib(N-); } }; 递归+记忆化搜索 ...

  4. 四十四:数据库之SQLAlchemy之join实现复杂查询

    准备工作 from datetime import datetime from sqlalchemy import create_engine, Column, Integer, String, Da ...

  5. PPT鼠绘必须掌握的PPT绘图三大核心功能

    在PPT制作教程栏目中,陆陆续续的分享了一系列通过合并形状功能来绘图的教程,绘制安卓机器人.绘制西瓜.绘制鸡蛋.其实,合并形状功能只是PPT绘图的一部分,而真正想要掌握PPT鼠绘,仅仅是会使用合并形状 ...

  6. CentOS7中SSH免密登陆设置

    一.准备三台客户机 hadoop100 192.168.13.100(Master) hadoop101 192.168.13.101 hadoop102 192.168.13.102 二.在hado ...

  7. Laravel中一些要记住 的写法

    模型篇: 1.根据数据库部分URL返回完整的URL public function getImageUrlAttribute() { // 如果 image 字段本身就已经是完整的 url 就直接返回 ...

  8. Hbase 0.92.1 Replication

    原集群 服务器名称 服务 sht-sgmhadoopnn-01 Master,NameNode,JobTracker sht-sgmhadoopdn-01 RegionServer,DataNode, ...

  9. Oracle 查看 impdp 正在执行的内容

    1. 今天进行数据库备份恢复 一直卡住  找了一下 公司另外一个部门的方神提供了一个方法连查看 具体在做什么操作: 2. 现象. impdp 到一个地方直接卡住不动 具体位置 view 这个地方足足卡 ...

  10. 面试题 | 数据库笔试题集合·之·SQL语句(2)

    第2章 SQL 语句 2.1 选择2.1.1 DELETE FROM S WHERE 年龄>60 语句的功能是( A ) A.从 S 表中彻底删除年龄大于 60 岁的记录B.S 表中年龄大于 6 ...