C#文件交互

C#文件,弹出文件夹,筛选指定类型内容,获取选中内容的绝对路径

带文件过滤器,若需要显示全部则形参传入空值;
`
public string filterBuilder(string filter)
{
string input = filter;

 // 将字符串拆分成单独的扩展名
 string[] extensions = input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

 // 构建文件过滤器字符串
 StringBuilder filterBuilder = new StringBuilder();
 foreach (string extension in extensions)
 {
     string description = extension.ToUpper().Substring(1) + " files (*" + extension + ")|*" + extension;
     filterBuilder.Append(description).Append("|");
 }

 // 删除末尾的竖线
 if (filterBuilder.Length > 0)
 {
     filterBuilder.Length--; // 删除最后一个字符
 }
 return filterBuilder.ToString();

}
//弹出对话框,设置过滤器,获取选中文件的指定路径
using (var dialog = new OpenFileDialog())
{
dialog.Filter = filterBuilder(uiComboBox1.SelectedItem.ToString());
dialog.Multiselect = true;

DialogResult result = dialog.ShowDialog();

if (result == DialogResult.OK && dialog.FileNames.Length > 0)
{
    foreach (string file in dialog.FileNames)
    {
        uiListBox1.Items.Add(file);
    }
}

}
`

C#先指定的文件中以追加形式写入文件,附加具体时间信息

` static void Main()
{
string logFilePath = "your_log_file_path.log";

    // 确保文件存在,如果不存在则创建新文件
    if (!File.Exists(logFilePath))
    {
        File.Create(logFilePath).Close();
    }

    // 以追加模式打开文件流
    using (StreamWriter writer = File.AppendText(logFilePath))
    {
        // 获取当前时间
        DateTime currentTime = DateTime.Now;

        // 格式化时间信息
        string formattedTime = currentTime.ToString("yyyy-MM-dd HH:mm:ss");

        // 写入带时间信息的日志
        writer.WriteLine(formattedTime + " - Your log message here");
    }
}`

传入路径若不存在此路径则创建路径
if(!Directory.Exist(Path)) { Directory.CreateDirectory(Path); }
使用递归将一个文件夹下的所有内容拷贝到另一个文件夹下
`
public void CopyAssembley(string sourceDir, string destDir)
{
DirectoryInfo sourceDirectoryInfo = new DirectoryInfo(sourceDir);
DirectoryInfo destDirectoryInfo = new DirectoryInfo(destDir);

 if (!destDirectoryInfo.Exists)
 {
     destDirectoryInfo.Create();
 }

 foreach (FileInfo file in sourceDirectoryInfo.GetFiles())
 {
     string targetFilePath = Path.Combine(destDir, file.Name);
     file.CopyTo(targetFilePath, true); 
 }

 // 递归复制所有子文件夹
 foreach (DirectoryInfo subDirectory in sourceDirectoryInfo.GetDirectories())
 {
     string newDestinationDir = Path.Combine(destDir, subDirectory.Name);
     CopyAssembley(subDirectory.FullName, newDestinationDir);
 }

}
`

posted @ 2024-04-18 08:40  Erik_apex  阅读(11)  评论(0编辑  收藏  举报