Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
МИР ВАШЕМУ ДОМУ!!!
57 / 58 / 7
Регистрация: 01.04.2009
Сообщений: 890
Записей в блоге: 1

Как заблокировать текстовый файл для просмотра

16.03.2012, 09:44. Показов 2462. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте друзья.

Думаю есть достаточно средств для блокировки файла (текстового к примеру) средствами c#. Но ниже приведенные примеры я не понял.
Вот способов блокировки и разблокировки:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using System;
using System.IO;
using System.Text;
 
class FStreamLock
{
    static void Main()
    {
        UnicodeEncoding uniEncoding = new UnicodeEncoding();
        string lastRecordText =
            "The last processed record number was: ";
        int textLength = uniEncoding.GetByteCount(lastRecordText);
        int recordNumber = 13;
        int byteCount =
            uniEncoding.GetByteCount(recordNumber.ToString());
        string tempString;
 
        using (FileStream fileStream = new FileStream(
            "Test.txt", FileMode.Open,
            FileAccess.ReadWrite, FileShare.ReadWrite))
        {
            // Write the original file data.
            if (fileStream.Length == 0)
            {
                tempString =
                    lastRecordText + recordNumber.ToString();
                fileStream.Write(uniEncoding.GetBytes(tempString),
                    0, uniEncoding.GetByteCount(tempString));
            }
 
            // Allow the user to choose the operation.
            char consoleInput = 'R';
            byte[] readText = new byte[fileStream.Length];
            while (consoleInput != 'X')
            {
                Console.Write(
                    "\nEnter 'R' to read, 'W' to write, 'L' to " +
                    "lock, 'U' to unlock, anything else to exit: ");
 
                if ((tempString = Console.ReadLine()).Length == 0)
                {
                    break;
                }
                consoleInput = char.ToUpper(tempString[0]);
                switch (consoleInput)
                {
                    // Read data from the file and 
                    // write it to the console.
                    case 'R':
                        try
                        {
                            fileStream.Seek(0, SeekOrigin.Begin);
                            fileStream.Read(
                                readText, 0, (int)fileStream.Length);
                            tempString = new String(
                                uniEncoding.GetChars(
                                readText, 0, readText.Length));
                            Console.WriteLine(tempString);
                            recordNumber = int.Parse(
                                tempString.Substring(
                                tempString.IndexOf(':') + 2));
                        }
 
                        // Catch the IOException generated if the 
                        // specified part of the file is locked.
                        catch (IOException e)
                        {
                            Console.WriteLine("{0}: The read " +
                                "operation could not be performed " +
                                "because the specified part of the " +
                                "file is locked.",
                                e.GetType().Name);
                        }
                        break;
 
                    // Update the file.
                    case 'W':
                        try
                        {
                            fileStream.Seek(textLength,
                                SeekOrigin.Begin);
                            fileStream.Read(
                                readText, textLength - 1, byteCount);
                            tempString = new String(
                                uniEncoding.GetChars(
                                readText, textLength - 1, byteCount));
                            recordNumber = int.Parse(tempString) + 1;
                            fileStream.Seek(
                                textLength, SeekOrigin.Begin);
                            fileStream.Write(uniEncoding.GetBytes(
                                recordNumber.ToString()),
                                0, byteCount);
                            fileStream.Flush();
                            Console.WriteLine(
                                "Record has been updated.");
                        }
 
                        // Catch the IOException generated if the 
                        // specified part of the file is locked.
                        catch (IOException e)
                        {
                            Console.WriteLine(
                                "{0}: The write operation could not " +
                                "be performed because the specified " +
                                "part of the file is locked.",
                                e.GetType().Name);
                        }
                        break;
 
                    // Lock the specified part of the file.
                    case 'L':
                        try
                        {
                            fileStream.Lock(textLength - 1, byteCount);
                            Console.WriteLine("The specified part " +
                                "of file has been locked.");
                        }
                        catch (IOException e)
                        {
                            Console.WriteLine(
                                "{0}: The specified part of file is" +
                                " already locked.", e.GetType().Name);
                        }
                        break;
 
                    // Unlock the specified part of the file.
                    case 'U':
                        try
                        {
                            fileStream.Unlock(
                                textLength - 1, byteCount);
                            Console.WriteLine("The specified part " +
                                "of file has been unlocked.");
                        }
                        catch (IOException e)
                        {
                            Console.WriteLine(
                                "{0}: The specified part of file is " +
                                "not locked by the current process.",
                                e.GetType().Name);
                        }
                        break;
 
                    // Exit the program.
                    default:
                        consoleInput = 'X';
                        break;
                }
            }
        }
    }
}
Сделал все как тут, в чем принцип блокировки файла по этому методу?
Вот есть файл, я хочу чтоб его никто не открывал для просмотра (только программа которая будет работать с ним).
Можно такое реализовать?

Вот еще пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 [DllImport(
"kernel32.dll",
SetLastError = true,
EntryPoint = "CreateFileA"
)]
        internal static extern IntPtr CreateFile(
        String filename,
        UInt32 desiredAccess,
        UInt32 shareMode,
        IntPtr attributes, // Really, this is the SECURITY_ATTRIBUTES pointer
        UInt32 creationDisposition,
        UInt32 flagsAndAttributes,
        IntPtr templateFile
        );
        private const uint FILE_FLAG_BACKUP_SEMANTICS = 0x02000000;
        private const uint FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000;
        const uint FILE_FLAG_POSIX_SEMANTICS = 0x01000000;
 
        private void button3_Click(object sender, EventArgs e)
        {
            IntPtr h = CreateFile(@"E:\test", GENERIC_READ, 0, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_POSIX_SEMANTICS, IntPtr.Zero);
            MessageBox.Show(h.ToString());
            CloseHandle(h);
 
 
        }
Взят тут.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2012, 09:44
Ответы с готовыми решениями:

Как заблокировать файл когда он открыт только для чтения?
Привет Всем! тут такая ситуация, имеется два JVM (т.е. запушены паралельно) на одном компе - клиент и сервер. клиент посылает файл (в...

Как разместить для просмотра (только для просмотра!) скан книги на сайте?
Стоит задача по размещению для просмотра скана книги на сайте. Это можно сделать с помощью Flash-технологии?

Как открыть txt- файл в Access для просмотра?
Как открыть txt- файл в Access для просмотра? Пожалуйста пример.

1
12 / 12 / 2
Регистрация: 11.04.2011
Сообщений: 77
16.03.2012, 21:54
а может его лучше зашифровать -заменить все знаки на другие а твоя прога перед применением будет его расшифровывать для себя при этом сам файл останется зашифрованым
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2012, 21:54
Помогаю со студенческими работами здесь

Возможно ли как-то открыть файл .exe в Visual Studio для просмотра кода программы?
Возможно ли как-то открыть файл .exe в Visual Studio для просмотра кода программы?

Текстовый файл UTF-8 сохранить как текстовый файл ANSI
Есть текстовый файл в UTF-8 Нужно рядом сохранить его же, но в ANSI Как сделать это средствами c++? Среда Visual Studio 2010 ...

С помощью кнопки в экселе открыть вордовский файл или пдф файл для просмотра
1й раз сталкиваюсь, не знаю возможно ли вообще так сделать. С помощью кнопки в экселе открыть вордовский файл или пдф файл для...

Как заблокировать файл
Привет форум! пожалуйста обяснтие мне Как заблокировать так файл чтобы его не смогли: открыть, изменить свойства? слихал об LockFile(),...

Как в программе выглядит код для записи в текстовый файл
#include "stdafx.h" #include <iostream> using namespace std; class Bank { private:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru