c# 第八课 linq stream

本文介绍了如何使用C#中的DirectoryInfo类来遍历目录结构并获取目录信息,包括创建DirectoryInfo实例、递归访问子目录及文件。此外还探讨了如何使用FileStream和BinaryReader/Writer进行基本的文件读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.对文件和目录的访问

①访问目录

可以实例化DirectoryInfo来对特定的目录进行浏览与访问(注意权限限制),在敲书上的代码时,发现其中有一个变量 indentLevel要是按照书上初始化为-1时无法进行循环输出所访问的目录名及其修改时间,所以我把值初始为1。

 

static int dirCounter = 1;
 2          static int indentLevel = 1;
 3          public static void Main()
 4          {
 5              Tester t = new Tester();
 6              //start directory
 7  
 8              string theDirectory = Environment.GetEnvironmentVariable("windir");
 9              DirectoryInfo dir = new DirectoryInfo(theDirectory);
10              t.ExploreDirectory(dir);
11              Console.WriteLine("\n\n{0}directory found.\n", dirCounter);
12          }
13 
14          private void ExploreDirectory(DirectoryInfo dir)
15          {
16              //推入一个目录层级
17              indentLevel++;
18              //子目录缩进
19              for(int i = 0; i < indentLevel; i++)
20              {
21                  Console.WriteLine(" ");
22                  Console.WriteLine("[{0}]{1} [{2}]\n", indentLevel, dir.Name, dir.LastAccessTime);
23                  DirectoryInfo[] directories = dir.GetDirectories();
24                  foreach(DirectoryInfo direc in directories)
25                  {
26                      dirCounter++;
27                      ExploreDirectory(direc);//递归调用自己
28                  }
29                  indentLevel--;
30              }
31 
32          }

 部分结果为

 

也可以用Directory.GetCurrentDiectory()来得到当前目录(directory类的方法),我觉得这个方法会很常用。

 

流用于对IO处理,在System.IO名称空间中有以下类:   BinaryReader/Writer   TextReader/Writer   Stream 其中类Stream为抽象类。由此有三个派生类:   MemoryStream:对内存进行读取与写入   BufferedStream:对缓冲器进行读取/写入   FileStream:对文件执行读取与写入

TextReader/Writer为抽象类。由此派生类: StreamReader/StreamWirter StringReader/StreamWrite

IO操作基本上需要用到Stream相关的子类。其实对于Stream来说,操作起来比较简单,只要对细节的处理稍微注意一下,相信在使用它的时候也可以得心应手。

static void Main(string[] args)
{
//文件流的使用:
    Console.WriteLine("请输入一个路径:");
    string s=Console.ReadLine(); 
    FileStream fileStream=new FileStream(s,FileMode.OpenOrCreate); 
    BinaryWriter binStream=new BinaryWriter (fileStream); 
    for(int i=1;i<=10;i++) 
    {
        binStream.Write((int)i); //将 4 字节有符号整数写入当前流,并将流的位置提升 4 个字节。
    } 
    binStream.Close(); 
    fileStream.Close(); 
    FileStream f=new             FileStream(s,FileMode.Open,FileAccess.Read,FileShare.ReadWrite); 
    BinaryReader buf=new BinaryReader(f); 
    for(int i=1;i<=10;i++) 
    {
    Console.WriteLine("输出{0}",buf.ReadInt32()); //这样是可以的,因为int是32位的
    }
}   

 输出结果为

 

关于file和directory:

1. Classes provided for file and directory manipulation.

2. The classes you need are in the System.IO namespace.

3. File class: Represents a file on disk.

4. Directory class: Represents a directory (Windows folder).

继承此类的对象可以跨越应用程序域边界被引用,甚至被远程引用。远程调用时, 将产生一个远程对象在本地的透明代理,通过此代理来进行远程调用。 使用代理交换消息来跨应用程序域边界进行通讯的对象的基类。

Working with Directories:

1. The Directory class exposes static methods for creating, moving, and exploring directories.

2. All the methods of the Directory class are static; therefore, you can call them all without having an instance of the class.

3. The DirectoryInfo class is a similar class, but one that has nothing but instance members (i.e.,no static members at all).

4. The FileSystemInfo class has a number of properties and methods that provide information about a file or directory.

Creating a DirectoryInfo:

1. Object To explore a directory hierarchy, you need to instantiate a DirectoryInfo object.

2. The DirectoryInfo class provides methods for getting not just the names of contained files and directories, but also FileInfo and DirectoryInfo objects, allowing you to dive in to the hierarchical structure, extracting subdirectories and exploring these recursively.

Working with Files:

1. The DirectoryInfo object can also return a collection of all the files in each subdirectory found.

2. The DirectoryInfo.GetFiles( ) method returns an array of FileInfo objects, each of which describes a file in that directory.

3. The FileInfo and File objects relate to one another, much as DirectoryInfo and Directory do.

4. Like the methods of Directory, all the File methods are static.

5. Like DirectoryInfo, all the methods of FileInfo are instance methods.

转载于:https://www.cnblogs.com/GSONG/p/4495539.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值