一、文件操作类
文件操作主要有以下几个类:
FileInfo类、Directory类、DirectoryInfo类、File类、FileStream类、StreamReader类、StreamWriter类。
File类和Directory类是静态类,直接 类.属性名/方法名。通过文件流读写文件(StreamReader、StreamWriter)一般适用于多种编码。读写流使用过之后需要关闭。
二、文件操作类的基本操作
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace File_Control
{
class Example
{
static void Main(string[] args)
{
//FileInfo_Example.Example();
//DirectoryInfo_Example.Example();
//File_Example.Example();
//FileStream_Example.Example();
//Stream_Reader_Writer.Example();
Directory_Example.Example();
Console.Read();
}
}
#region 文件读写流
public class Stream_Reader_Writer
{
public static void Example()
{
//文件读取流,勿需考虑字节编码
//StreamReader reader = new StreamReader("TextFile1.txt");
//while (true)
//{
// int m = reader.Read();
// if (m == -1)
// break;
// Console.Write((char)m);
//}
//while (true)
//{
// string str = reader.ReadLine();
// if (str == null)
// break;
// Console.WriteLine(str);
//}
//Console.WriteLine(reader.ReadToEnd());
//reader.Close();
StreamWriter writer = new StreamWriter("jovi.txt");
//int m = Console.Read();
//writer.Write((char)m);
while (true)
{
string ss = Console.ReadLine();
if (ss == "end")
{
Console.WriteLine("跳出循环");
break;
}
writer.WriteLine(ss);
}
writer.Close();
}
}
#endregion
public class FileStream_Example
{
public static void Example()
{
/*
//1.新建文件流
FileStream stream = new FileStream("pink-hair.jpeg", FileMode.Open);
//2.设置文件存储
byte[] bt = new byte[1024];
//当超出数组长度时,循环读取
while (true)
{
//3.写入文件
int length = stream.Read(bt, 0, bt.Length);
if (length == 0)
{
Console.WriteLine("查询结束");
break;
}
for (int i = 0; i < length; i++)
{
Console.Write(bt[i] + " ");
}
}
*/
FileStream readStream = new FileStream("pink-hair.jpeg", FileMode.Open);
FileStream writeStream = new FileStream("uu.jpeg", FileMode.Create);
byte[] bt = new byte[1024];
while (true)
{
int length = readStream.Read(bt, 0, bt.Length);
if (length == 0)
{
Console.WriteLine("读取结束");
break;
}
//for (int i = 0; i < length; i++)
//{
// writeStream.WriteByte(bt[i]);
//}
writeStream.Write(bt, 0, bt.Length);
}
readStream.Close();
writeStream.Close();
}
}
public class File_Example
{
public static void Example()
{
//向文件中添加指定的字符串,如果文件不存在,则新建文件,不覆盖文件中的数据
//File.AppendAllText("Word.txt", "今天也要元气满满哦\r\n今天也要元气满满哦\r\n今天也要元气满满哦\r\n今天也要元气满满哦\r\n");
//文件不存在创建文件
//File.AppendText("ddd.txt");
//将源文件复制到目标文件,同一文件夹,不覆盖同名文件
//File.Copy("Word.txt", "Word1.txt");
//File.Copy("shiina-pink-hair.jpeg", "pink-hair.jpeg");
//Console.WriteLine(File.Exists("pink-hair.jpeg"));
//移动文件,不保存原文件
//File.Move("TextFile1.txt", "POLO.txt");
//读取文件的所有行
//string str = File.ReadAllText("TextFile1.txt");
//Console.WriteLine(str);
//每一行文本读取成一个字符串,最后组成一个字符串的数组
//string[] str= File.ReadAllLines("TextFile1.txt");
//foreach (var item in str)
//{
// Console.WriteLine(item);
//}
//byte[] bt = File.ReadAllBytes("pink-hair.jpeg");
//foreach (var item in bt)
//{
// Console.Write(item.ToString());
//}
//按行写入
//File.WriteAllLines("TextFile2.txt", new string[] { "今天也要元气满满哦", "今天也要元气满满哦", "今天也要元气满满哦" });
//File.WriteAllText("mi.txt", "今天也要元气满满哦\r\n今天也要元气满满哦\r\n今天也要元气满满哦");
//获取字节,然后写入,相当于复制文件
byte[] bt = File.ReadAllBytes("pink-hair.jpeg");
File.WriteAllBytes("dear.jpeg", bt);
}
}
public class Directory_Example
{
public static void Example()
{
Directory.CreateDirectory("OOP");
//删除空目录,如果目录中有内容,会抛出异常
Directory.Delete("OOP");
Console.WriteLine(Directory.Exists("OOP"));
}
}
public class DirectoryInfo_Example
{
public static void Example()
{
DirectoryInfo dirInfo = new DirectoryInfo(@"D:\C#\File_Control\File_Control\bin\Debug");
Console.WriteLine("文件夹是否存在: " + dirInfo.Exists);
Console.WriteLine("文件夹创建时间: " + dirInfo.CreationTime);
Console.WriteLine("文件夹完整目录: " + dirInfo.FullName);
Console.WriteLine("文件夹名称: " + dirInfo.Name);
//目录根部分即该盘符
Console.WriteLine("目录的根部分: " + dirInfo.Root);
Console.WriteLine("子目录的父目录: " + dirInfo.Parent);
//创建子目录
dirInfo.CreateSubdirectory("Demo");
}
}
public class FileInfo_Example
{
public static void Example()
{
//相对位置
FileInfo fileInfo = new FileInfo("TextFile1.txt");
//绝对位置
//FileInfo fileInfo = new FileInfo(@"D:\C#\File_Control\File_Control\TextFile1.txt");
/*
* 1.文件是否存在
* Exists属性
* 2.
*
* **/
Console.WriteLine("文件是否存在: " + fileInfo.Exists);
//获取文件名 - 该文件的文件名加扩展名
Console.WriteLine("文件名: " + fileInfo.Name);
//移动文件到指定位置,默认是本目录,提供要指定新文件名的选项 - 即修改文件名
//fileInfo.MoveTo("../File.txt");
//当前文件的大小,以字节为单位。
Console.WriteLine("文件的大小: " + fileInfo.Length);
//确定当前文件是否是只读的值
//Console.WriteLine("是否只读: " + fileInfo.IsReadOnly);
fileInfo.Delete();
Console.WriteLine("创建时间: " + fileInfo.CreationTime);
fileInfo.Refresh();
Console.WriteLine("文件是否存在: " + fileInfo.Exists);
//文件的扩展名 - .后缀
Console.WriteLine("文件的扩展名: " + fileInfo.Extension);
//父目录实例和完整路径字符串相同
Console.WriteLine("父目录的实例: " + fileInfo.Directory);
Console.WriteLine("目录的完整路径的字符串: " + fileInfo.DirectoryName);
Console.WriteLine("文件的完整目录: " + fileInfo.FullName);
Console.WriteLine("获取当前文件或目录的特性: " + fileInfo.Attributes);
//复制文件,不覆盖现有文件
//fileInfo.CopyTo("polo.txt");
//FileInfo fileInfo = new FileInfo("MyLove.txt");
//if (!fileInfo.Exists)
//{
// fileInfo.Create();
//}
当创建新文件时,需修改对象的状态。
//fileInfo.Refresh();
//Console.WriteLine("是否存在: " + fileInfo.Exists);
//StreamReader reader = fileInfo.OpenText();
//while (reader.Read()>=0)
//{
//Console.WriteLine(reader.ReadToEnd());
//}
//Console.WriteLine(fileInfo.DirectoryName);
}
}
}