📄 binaryfilecontrol.cs
字号:
using System;
using System.IO;
using System.Threading;
using System.Collections;
using System.Windows.Forms;
namespace FileTest
{
/// <summary>
/// BinaryFileControl 二进制文件操作类
/// </summary>
public class BinaryFileControl
{
private string _FileName;//文件名
private string _FilePath;//文件路径
private string _FileType;//文件类型
private BinaryWriter ObjBw;//写文件对象
private BinaryReader ObjBr;//读文件对象
private FileStream FStream;//文件流
private Int32[] FBytes;//二进制代码存储数足
private ArrayList EFPArray;//EXE文件路径数组
private DirectoryInfo DirFile;//文件夹信息对象
public System.Windows.Forms.Label label1;
public System.Windows.Forms.Label label2;
public System.Windows.Forms.ListBox listBox3;
public System.Windows.Forms.Label label3;
private ArrayList AllDirList;
private int FileNum=0;
public BinaryFileControl()
{
//
// TODO: 在此处添加构造函数逻辑
//
this.AllDirList=new ArrayList();
}
/// <summary>
/// 遍历文件夹获得文件夹下的所有exe文件的路径
/// </summary>
public void EXEFileTraversing()
{
//try
//{
this.EFPArray=new ArrayList();
this.DirFile=new DirectoryInfo(this._FilePath);//创建文件路径对象
DirectoryInfo[] childDir=this.DirFile.GetDirectories();//获得当前路径的子目录数组
FileInfo[] files=null;//当前目录的文件对象数组
files=this.DirFile.GetFiles();//获得当前目录的文件对象数组
//循环文件对象数组
this.label2.Text=this._FilePath;
foreach(FileInfo IFile in files)
{
Application.DoEvents();
this.label1.Text=IFile.Name;
//如果是exe文件加入集合列表
if(IFile.Name.IndexOf(".")!=-1)
{
string[] FileCls=IFile.Name.Split('.');
if(FileCls[1]=="exe"||FileCls[1]=="EXE")
{
FileNum++;
this.label3.Text=Convert.ToString(FileNum);
this.EFPArray.Add(IFile);
this.listBox3.Items.Add(IFile.FullName);
}
}
}
//递归调用判断是否有子目录
if(childDir!=null)
{
//循环子目录递归调用函数
foreach(DirectoryInfo DirItem in childDir)
{
if(DirItem.Attributes!=System.IO.FileAttributes.Hidden&&DirItem.Name!="System Volume Information")//不循环系统目录和隐藏文件夹
{
if(!this.AllDirList.Contains(DirItem))//如果子目录没有被循环过
{
this.AllDirList.Add(DirItem);
this._FilePath=DirItem.FullName;
this.EXEFileTraversing();
}
}
}
}
else
{
this._FilePath=this.DirFile.Root.FullName;
this.EXEFileTraversing();
}
//}
//catch(Exception exp)
//{
//this.EXEFileTraversing();
//}
}
/// <summary>
/// 写文件方法
/// </summary>
public void FileWrite()
{
this.FStream=new FileStream(this._FilePath,FileMode.Create);//创建文件流对象
this.ObjBw=new BinaryWriter(this.FStream);//创建二进制写对象
//循环写入文件的二进制代码
for(int i=0;i<this.FBytes.Length;i++)
{
this.ObjBw.Write(this.FBytes[i]);
}
this.ObjBw.Close();
}
/// <summary>
/// 读取文件的方法
/// </summary>
public void FileRead()
{
try
{
this.FStream=new FileStream(this._FilePath,FileMode.Open);//创建文件流对象
this.ObjBr=new BinaryReader(this.FStream);//创建二进制读取对象
StreamReader sR=new StreamReader(this.FStream);
this.FBytes=new Int32[this.FStream.Length];//获得文件的大小
for(int i=0;i<this.FBytes.Length;i++)
{
if(sR.ReadLine()!=null)
{
this.FBytes[i]=this.ObjBr.ReadInt32();//循环读取文件的二进制码
}
}
}
catch(Exception exp)
{
return;
}
}
public ArrayList EXEList
{
get
{
return this.EFPArray;
}
}
/// <summary>
/// 文件类型
/// </summary>
public string FileType
{
get
{
return this._FileType;
}
set
{
this._FilePath=value;
}
}
/// <summary>
/// 文件名称
/// </summary>
public string FileName
{
get
{
return this._FileName;
}
set
{
this._FileName=value;
}
}
/// <summary>
/// 文件路径
/// </summary>
public string FilePath
{
get
{
return this._FilePath;
}
set
{
this._FilePath=value;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -