Программа которая может менять атрибуты выбранных файлов - C#
Формулировка задачи:
Написать программу которая может менять атрибуты выбранных файлов (Изманение, чтение, запись и т.д.) Должны меняться атрибуты файлов - по одному, или сразу несколько.
Атрибуты: только для чтения, архивный, скрытый, системный, сжатый, шифрованный, время создания, время доступа, время записи.
Вложенные файлы и папки тоже должны обрабатываться, например нажали на папку "только для чтения", значит все вложенные файлы и папки меняют атрибут (по всему вложенному дереву).
Решение задачи: «Программа которая может менять атрибуты выбранных файлов»
textual
Листинг программы
using System;
using System.IO;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
private static string fileName;
private static FileAttributes atr;
public Form1()
{
InitializeComponent();
dateTimePicker1.CustomFormat = "MM.dd.yyyy hh:mm:ss";
dateTimePicker2.CustomFormat = "MM.dd.yyyy hh:mm:ss";
dateTimePicker3.CustomFormat = "MM.dd.yyyy hh:mm:ss";
checkedListBox1.ItemCheck += CheckedListBox1_ItemCheck;
}
private void CheckedListBox1_ItemCheck( object sender, ItemCheckEventArgs e )
{
string atrName = (sender as CheckedListBox).Items[e.Index].ToString();
FileAttributes tmp = (FileAttributes)Enum.Parse( typeof(FileAttributes), atrName );
if ( e.NewValue == CheckState.Checked ) atr |= tmp;
else if ( e.NewValue == CheckState.Unchecked ) atr ^= tmp;
}
private void button1_Click( object sender, EventArgs e )
{
checkedListBox1.Items.Clear();
if ( openFileDialog1.ShowDialog() == DialogResult.OK )
{
fileName = openFileDialog1.FileName;
textBox1.Text = fileName;
atr = File.GetAttributes(fileName);
dateTimePicker1.Value = File.GetCreationTime( fileName );
dateTimePicker2.Value = File.GetLastAccessTime( fileName );
dateTimePicker3.Value = File.GetLastWriteTime( fileName );
Array arr = Enum.GetValues( typeof( FileAttributes ) );
foreach( var item in arr )
checkedListBox1.Items.Add( item.ToString(), atr.HasFlag( (Enum)Enum.Parse( typeof( FileAttributes ), item.ToString() ) ) );
}
}
private void button2_Click( object sender, EventArgs e )
{
try
{
File.SetCreationTime( fileName, dateTimePicker1.Value );
File.SetLastAccessTime( fileName, dateTimePicker2.Value );
File.SetLastWriteTime( fileName, dateTimePicker3.Value );
File.SetAttributes( fileName, atr );
}
catch (Exception ex)
{
MessageBox.Show( ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error );
}
}
}
}