1. 流概述
1)流提供了一种向后备存储写入字节以及从后备存储读取字节的方式。后备存储为文件、网络和内存。对应不同后备存储有不同的流,包括文件流、内存流和网络流。
2)Stream类为这一组的核心基类,其下派生了几个重要的数据流类BufferedStream、3)FileStream和MemoryStream,分别提供了特定字节数据输入和输出的相关操作。
3)Stream类还提供了NetworkStream及CryptoStream两个类。它们不属于IO命名空间,主要的功能分别是提供跨越网络的IO操作和数据加密。
2.FileStream类
1)文件数据流(FileStream类)用于读写文件。其也支持异步文件读写操作,允许对文件进行随机访问等。
2)FileStream类的构造方法有多个重载方法,最常用的构造方法形式为:
public FileStream(
string path, //指定要访问的文件路径
FileMode mode, //设定文件打开的方式
FlieAccess access, //设定访问的方式
FileShare share); //设定文件的共享方式
3.StreamReader类
程序代码:
static void Main(string[] args)
{
//定义一个StreamReader对象
StreamReader mySteamReader;
try
{
//打开指定路径下的文本文件
mySteamReader = File.OpenText("C:\\temp\\MyFile.txt");
}
catch
{
Console.WriteLine("文件打开失败!");
return;
}
//用Peek()方法读取文本文件,并输出到屏幕
while(mySteamReader.Peek()!= -1)
{
String myString = mySteamReader.ReadLine();
Console.WriteLine(myString);
}
Console.WriteLine("文件读取结束!");
//关闭文本文件
mySteamReader.Close();
}
4.StreamWriter类
程序代码:
//定义StreamWriter对象
StreamWriter myStreamWriter;
try
{
//在指定路径下创建file.txt文本文件
myStreamWriter = File.CreateText("C:\\temp\\file.txt");
}
catch
{
Console.WriteLine("文件创建失败!");
return;
}
//写入重载参数指定的某些数据,后跟行结束符
myStreamWriter.WriteLine("China");
myStreamWriter.WriteLine("USA");
myStreamWriter.WriteLine("Japan");
//关闭当前的 StreamWriter 对象和基础流。
myStreamWriter.Close();
}
5.文件、目录操作概述
1)在编写应用程序时,常常需要以文件的形式来保存和读取一些信息,这时就不可避免地要进行各种文件操作,还可能会需要设计自己的文件格式。
2)文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
3)目录是一个容器,可以存放多个文件和子目录
4).NET框架在命名空间System.IO中为我们提供了Directory类来进行目录管理。利用它,我们可以完成对目录进行创建、移动、浏览、删除等操作。命名空间System.IO还为我们提供了File类,File类通常和FileStream类一起协作来完成对文件的创建、删除、复制、移动、打开等操作。
6.文件目录的创建,删除,求文件大小,复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
/// <summary>
/// 计算目录大小
/// </summary>
class Program
{
}
class ShowDirSize
{
public static long DirSize(DirectoryInfo d)
{
long Size = 0;
// 返回当前目录的文件列表,累加字节数
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis)
{
Size += fi.Length;
}
// 返回当前目录的子目录,累加子目录的字节数
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis)
{
//递归调用DirSize函数,提取子目录并递归地查看它们,并累加字节数
Size += DirSize(di);
}
//以字节数返回目录与其子目录的大小
return (Size);
}
static void Main(string[] args)
{
#region 创建目录
string path = @"d:\MyDire";
if (Directory.Exists(path))
{
Console.WriteLine("目录已存在");
return;
}
Directory.CreateDirectory(path);
Console.WriteLine("创建目录成功:{0}", Directory.GetCreationTime(path));
#endregion
#region 求文件大小
string FilePath = @"C:\WEXAM\00000000答案";
if (FilePath.Length < 0)
{
Console.WriteLine("目录路径错误,请设定正确的目录路径!");
}
else
{
//参数是一个字符串,它指定要在其中创建 DirectoryInfo 的路径。
DirectoryInfo d = new DirectoryInfo(FilePath);
//调用DirSize函数
Console.WriteLine("{0} 目录和它的子目录总大小为: {1} bytes.", d, DirSize(d));
}
#endregion
#region 复制文件
string path1 = @"d:\temp\text.txt";
string path2 = @"d:\temp\text1.txt";
try
{
File.Delete(path2); //文件删除
File.Copy(path1, path2);
Console.WriteLine("{0}复制到{1}", path1, path2);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
Console.Read();
#endregion
}
}
}