C#文件操作
来源:互联网 发布:h3c 端口加入vlan 编辑:程序博客网 时间:2024/04/30 07:52
文件操作
1.读写文件第一步创建文件流
语法:
FileStream 文件对象=new FileStream(string FilePath, FileMode);
FilePath: 文件路径
FileMode: 打开文件的模式,是一个枚举类型
Create: 用于指定的名称新建一个文件,如果文件存在,则改写旧文件
CreateNew: 新建文件。如果文件存在会发生异常,提示文件已经存在
Open: 打开一个文件,使用这个枚举值时,指定的文件不存在,则指定的名称新建一个文件并打开
OpenOrCream: OpenOrCream与Open成员相似,只是如果文件不存在,则用指定的名称新建一个文件打开
Append: 打开文件,并在文件尾追加内容
2.StreamWriter写入器
创建文件流后,再创建写入器,StreamWriter 类称为写入器,它用于将数据写入文件流,只要将创建好的文件流传入,就可以创建它的实例
语法:
StreamWriter 写入器对象=new StreamWriter(文件流对象);
StreamWriter.Writer(): 用于写入器,
StreamWriter.WriterLine(): 用于写入一行数据,写入数据后换行。
StreamWriter.Close(): 用于关闭写入器
-------------------------示例代码-------------------------
try
{
//创建文件流
FileStream stream = new FileStream(@"D:\test.txt", FileMode.Create);
//创建写入器
StreamWriter writer = new StreamWriter(stream);
//写入字符串
string str = Console.ReadLine();
writer.Write(str);
//关闭写入器
writer.Close();
//关闭文件流
stream.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
-------------------------------------------------------------------------
2.StreamReader读取器
创建文件流后,再创建读取器,StreamReader 类称为读取器,它用于将数据写入文件流,只要将创建好的文件流传入,就可以创建它的实例
语法:
StreamReader 读取器对象 = new StreamWriter(文件流对象);
StreamWriter.ReadLine(): 用于写入一行数据,写入数据后换行。
StreamWriter.ReadLine(): 从当前位置读到末尾,返回字符串
StreamWriter.Close(): 用于关闭读取器
try
{
//创建文件流
FileStream stream = new FileStream(@"D:\test.txt", FileMode.Open);
//创建读取器
StreamReader reader = new StreamReader(stream,Encoding.GetEncoding("UTF-8"));
//读取文件所有内容
string str = reader.ReadToEnd();
Console.WriteLine(str);
//关闭读取器
reader.Close();
//关闭文件流
stream.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
----------------------------------------------------------------------
文件(File)和目录(Directory)的操作
1.File类的常用方法
(1)Exists(string path):检查指定文件是否存在,返回一个bool值例
if (File.Exists(@"D:\test.txt"))
{
Console.WriteLine("找到文件!");
}
(2)Copy(string SourceFilePath,string DestinationFilePath):将指定的源文件(ourceFilePath)中的内容复制到目标文件(DestinationFilePath)中,如果目标文件不存在,则在指定的路径中新建一个文件
(3)Move(string SourceFileName,string DestinationFileName): 将指定的文件(ourceFilePath)移动到新的路径(将指定的源文件(ourceFilePath)例: File.Copy(@"D:\test.txt", @"E:\test.txt");
(4)Delete(string path):删除指定文件,如果指定文件不存在,则不发生异常 File.Delete(@"D:\test.txt");
2.Directory类的常用的方法
(1)Exists(string path): 用于检查指定文件夹在磁盘上是否存在
(2)Move(string sourceDirName,stirng destDirName): 用于将文件或者目录及其内容移到新的位置
(3)delete(string,bool): 删除指定目录,如果bool值为true,则删除子目录的所有目录内容
3.FileInfo类的属性和方法
FileInfo 对象名=new FileInfo(@"文件路径");
(1)Exists属性: 用于检查指定文件是否存在,返回一个bool值 例:FileInfo类的对象.Exists
(2)Extension属性: 获取表示文件扩展名部分的字符串(后缀名) 例:FileInfo类的对象.Extension
(3)Name属性: 获取文件名 例:FileInfo类的对象.Name
(4)FullName属性: 获取目录或文件的完整目录 例:FileInfo类的对象.FullName
(5)CopyTo(String): 将现有的文件复制到新文件,不允许覆盖现有的文件 例:FileInfo类的对象.CopyTo(String)
(6)Delete(): 永久删除文件 例: FileInfo类的对象.Delete()
(7)MoveTo(string): 将指定文件移到新的位置(string) 例: FileInfo类的对象.MoveTo(string)
4.DirectoryInfo类的属性和方法
DirectoryInfo 对象名=new DirectoryInfo(@"文件路径");
两个重要的方法
(1)GetDirectory():该方法返回当前目录的子目录对象数组,Directory也有这个方法,但返回值是当前目录子目录的名称数组
(2)GetFiles():该方法返回当前目录下文件列表(FileInfo对象数组),Directory也有这个方法,但返回值是指定目录子目录的名称数组
5.要注意的是 File类和Directory类都用静态方法操作文件和目录,而FileInfo类和DirectoryInfo类都要实例化
MyFile类的属性
(1)float类型FileLength属性: 文件长度,以KB为单位
(2)string类型FileName 属性:文件名
(3)string类型FilePath 属性:文件路径
using System;
using System.IO;
using System.Text;
namespace WindowsFormsApplication4
{
public static class UserDataAccessor
{
private static int s_MsgIndex = 0;
public static void SaveData(UserData userMsgClass)
{
string realAddess = "E:\\myCode\\Test_23\\用户信息主文件夹";
if (!Directory.Exists(realAddess))
Directory.CreateDirectory(realAddess);
//将用户输入的地址切割???????????????????????创建文件还没有实现
string[] addressStrArray = userMsgClass.UserAdderss.Split(' ');
string cellNameStr = addressStrArray[0];
string floorNameStr = addressStrArray[1];
var filePath = Path.Combine(realAddess, "\\" + cellNameStr + "\\" + floorNameStr + (s_MsgIndex++) + ".dat");
//创建文件
FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.None, 4096, true);
string userStrMsg = userMsgClass.UserID + ' ' +
userMsgClass.UserName + ' ' +
userMsgClass.UserTelnum + ' ' +
userMsgClass.UserAdderss + ' ' + "\r\n";
byte[] buffer = Encoding.ASCII.GetBytes(userStrMsg);
//写文件=============写什么,从哪开始,写多少,异步写操作完成后调用的方法(来关闭文件),它将该特定的异步写入请求与其他请求区别开来。
fileStream.BeginWrite(buffer, 0, buffer.Length, WriteDone, fileStream);
}
//使用 AsyncCallback 委托在一个单独的线程中处理异步操作的结果。 AsyncCallback 委托表示在异步操作完成时调用的回调方法。
//回调方法采用 IAsyncResult 参数,该参数随后可用来获取异步操作的结果。
//当文件写完后关闭文件
private static void WriteDone(IAsyncResult ar)
{
Stream s = (Stream)ar.AsyncState;
s.EndWrite(ar);
s.Close();
}
}
}
- C#中的文件操作
- C# 文件操作
- C# 文件操作
- c#文件操作
- C#中的文件操作
- C#文件操作
- c#文件操作
- C# 文件操作相关
- c# 常用文件操作
- c# 常用文件操作
- C#操作文件
- C# 文件操作
- c#文件操作
- C# 文件操作
- c#文件操作
- C# 文件操作
- (转)c#文件操作
- C# 基本文件操作
- 【BB10开发】通过编译QML为二进制代码来加速启动兼保护源代码
- Apache运行Python的配置
- 异常大全
- Ubuntu下彻底卸载mysql
- 专题2-2接续符和转义符
- C#文件操作
- U8日志文件过大,U8DispatchService.log
- css中文本换行属性word-wrap和white-space
- Android开发:在Android源码下编译C文件
- XCode报错 error: failed to launch “XXX.app”-- No such file or directory (XXXXXX)解决方法
- 求欧拉函数模板
- W3C 定义的盒模式
- HDU4521解题报告(DP解决)
- WINCE 6.0 :Error: failed PB timebomb check