|
Программирование >> Автоматически обновляемые приложения
Как удалить файл в Корзину Если вам нужно удалить файл в Корзину, как это принято в Windows, то придется вызывать функцию Windows API SHFiieOperation. В листинге 10.35 в корзину удаляется файл test.txt, который находится на диске С:\. ; Листинг 10,35. Удаление файла в корзину using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Pack = 1) ] private struct SHFILEOPSTRUCT { public IntPtr hwnd; [MarshalAs(UnmanagedType.U4) ] public int wFunc; public string pFrom; public string pTo; public short fFlags; [MarshalAs(UnmanagedType.Bool)] public bool fAnyOperationsAborted; public IntPtr hNameMappings; public string IpszProgressTitle; [Dlllmport( shell32.dll , CharSet = CharSet.Auto)] private static extern int SHFiieOperation(ref SHFILEOPSTRUCT fileOp) . константы для SHFiieOperation private const int FO DELETE = 3; private const int FOF ALLOWUNDO = 64; private const int FOF NOCONFIRMATION = 16; shortPath, shortPath.Capacity); this.Text = shortPath.ToString0; StringBuilder longPath = new StringBuilder(1024); GetLongPathName(this.Text, longPath, longPath.Capacity); listBoxl.Items.Clear(); listBoxl.Items.Add(longPath.ToString 0); private void button5 Click(object sender, EventArgs e) { Удаляем файл в корзину MoveToRecycleBin ((а С: \Test. txt ) ; По старой привычке решил посмотреть информацию на эту тему в Интернете, и меня ждала удача. В блоге под названием TKS Blog (http: blogs.gotdotnet.ru/personaI/tk/defauIt.aspx) обнаружил заметку, в которой говорилось, как можно удалить файл без вызова неуправляемого кода. Для этого нужно подключить сборку Microsoft.VisualBasic (через Project I Add Reference...) и далее написать код, приведенный в листинге 10.36. I Листинг 10.36. Удаление файла через управляемый код private void butDelRecycleVB Click(object sender, EventArgs e) { FileSystem.DeleteFile( c:/temp.txt , UIOption.AllDialogs, RecycleOption.SendToRecycleBin); Обратите внимание, что метод DeieieFiie является новым методом, который появился в .NET Framework 2.0. Для удаления папок в Корзину можете применить также новый метод FileSystem.DeleteDirectory, КОТОрыЙ работает схожим образом. Примечание Примеры работы с файлами находятся в папке FilesDemo на прилагаемом диске. public static int MoveToRecycleBin(string path) { SHFILEOPSTRUCT fop = new SHFILEOPSTRUCT(); fop.wFunc = FO DELETE; fop.pFrom = path + \0 ; без дополнительного \0 не работает fop.fFlags = FOF ALLOWUNDO I FOF NOCONFIRMATION; return SHFileOperation(ref fop); [Листинг 10;37. Чтение и запись в различных кодировках private void butK0I8R Click(object sender, EventArgs e) { System.10.FileStream fs = new 0. FileStream ((a D: \koi8r.txt . System.10.FileMode.OpenOrCreate); System.10.StreamReader sr = new System.10.StreamReader(fs, System.Text.Encoding.GetEncoding( К018-Г ) , false); textBoxl.Text = sr.ReadToEnd(); private void butSaveWinl251 Click(object sender, EventArgs e) { System.10.StreamWriter sw = new System. 10. StreamWriter ((a D: \MyBook\CSharp Tips\win. txt , false, ext.Encoding.GetEncoding(1251)); sw.Write(textBoxl.Text); sw.Close(); Сначала мы загружаем текст из файла koi8r.txt, который записан в кодировке K0I8-R, поэтому в коде явно указываем имя кодировки. Далее мы сохраняем текст из текстового поля в файл уже в кодировке Windows-1251, используя вместо имени кодировки целочисленное значение 1251. Не забудьте при использовании примеров исправить пути к текстовым файлам. В папке Encod- Как записать и прочитать текст в различных кодировках? Как правило, при чтении или записи английских текстов никаких проблем не возникает. А вот при чтении русских текстов иногда возникают трудности. Дело в том, что так исторически сложилось, что имеется несколько кодировок для русского языка. В настоящее время самой распространенной кодировкой является Windows-1251, но иногда попадаются текстовые файлы, записанные в кодировке K0I8-R или DOS. В этом случае нужно использовать соответствующую кодировку при помощи метода GetEncoding класса Encoding. Пример показан в листинге 10.37.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |