Программирование >>  Автоматически обновляемые приложения 

1 ... 111 112 113 [ 114 ] 115 116 117 ... 170


Как удалить файл в Корзину

Если вам нужно удалить файл в Корзину, как это принято в 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.



1 ... 111 112 113 [ 114 ] 115 116 117 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика