C/C++ - [решено] Открытие файлов на запись
-
O L E G
C/C++ - [решено] Открытие файлов на запись
Подскажите код, с помощью которого можно открыть файлы на запись или установить защиту на него, Но при этом что бы я мог считать с него данные, но нем мог их записать и удалить сам файл. За ранее спасибо
-
ferget
Re: C/C++ - [решено] Открытие файлов на запись
Код:
Код: Выделить всё
#include
#include
using namespace std;
int main()
{
fstream fin;
fin.open("input.txt", fstream::in);
return 0;
}-
O L E G
Re: C/C++ - [решено] Открытие файлов на запись
Работает!
НО на чтение (не возможно перенести,удалить,переименовать) но можно записать в него!!!
Подскажи, как сделать так что бы было только чтение на файле, но записать нельзя было бы в него.
Будет проблема еще с записью потому что на файле стоит Read Only, надо снять его, после открыть на запись и снова установить чтение
Помогите, я только начинаю поэтому не которые аспекты Трудно найти
Спасибо
НО на чтение (не возможно перенести,удалить,переименовать) но можно записать в него!!!
Подскажи, как сделать так что бы было только чтение на файле, но записать нельзя было бы в него.
Будет проблема еще с записью потому что на файле стоит Read Only, надо снять его, после открыть на запись и снова установить чтение
Помогите, я только начинаю поэтому не которые аспекты Трудно найти
Спасибо
-
O L E G
Re: C/C++ - [решено] Открытие файлов на запись
Пробовал
Код:
-----
Код:
но записать все равно возможно, к примеру файл boot.ini, как поставить защиту от записи,но на чтение оставить
Код:
Код: Выделить всё
-fstream - обощенный поток ввода/вывода в файл
-ofstream - поток записи в файл-----
Код:
Код: Выделить всё
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <clocale>
using std::cout;
using std::endl;
using namespace std;
int main()
{
setlocale(LC_CTYPE,"Russian");
ifstream fin;
fin.open("C://1.txt", ifstream::in);
cout << "Защита установлена C://boot.ini" << endl;
system("pause");
return 0;
}но записать все равно возможно, к примеру файл boot.ini, как поставить защиту от записи,но на чтение оставить
-
ferget
Re: C/C++ - [решено] Открытие файлов на запись
вот простой пример
на время работы программы снимается атрибут readonly, в файл записать нельзя
Код:
на время работы программы снимается атрибут readonly, в файл записать нельзя
Код:
Код: Выделить всё
#include
#include
using namespace std;
int main()
{
system ("attrib -r input.txt");
fstream fin;
fin.open("input.txt", fstream::in|fstream::out);
int k=0;
while(k!=1)
{
cin>>k;
}
system ("attrib +r input.txt");
return 0;
}-
O L E G
Re: C/C++ - [решено] Открытие файлов на запись
ferget, проверил скрипт, работает до этого действия
Код:
Дальше стоит окно и не каких действий! Причем запись произвести удаеться в файл
А если так попробовать
Код:
Все работает,кроме (опять же запись в файл производиться)
Код:
Код: Выделить всё
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
system ("attrib -r input.txt");
fstream fin;
fin.open("input.txt", fstream::in|fstream::out);Дальше стоит окно и не каких действий! Причем запись произвести удаеться в файл
А если так попробовать
Код:
Код: Выделить всё
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <clocale>
using std::cout;
using std::endl;
using namespace std;
int main()
{
setlocale(LC_CTYPE,"Russian");
system ("attrib -r input.txt");
fstream fin;
fin.open("input.txt", fstream::in|fstream::out);
system ("attrib +r input.txt");
cout << "Защита установлена input.txt" << endl;
system("pause");
return 0;
}Все работает,кроме (опять же запись в файл производиться)
-
ferget
Re: C/C++ - [решено] Открытие файлов на запись
Цитата O L E G:
Дальше стоит окно и не каких действий!
так никаких действий быть и не должно, если введете 1, программа завершит работу
Цитата O L E G:
Причем запись произвести удаеться в файл
странно, у меня работает так, можно открыть файл, блокнотом, можно написать в блокноте, но при сохранении пишет "файл занят другим процессом"
Дальше стоит окно и не каких действий!
C/C++ - [решено] Открытие файлов на запись
так никаких действий быть и не должно, если введете 1, программа завершит работу
Цитата O L E G:
Причем запись произвести удаеться в файл
C/C++ - [решено] Открытие файлов на запись
странно, у меня работает так, можно открыть файл, блокнотом, можно написать в блокноте, но при сохранении пишет "файл занят другим процессом"
-
O L E G
Re: C/C++ - [решено] Открытие файлов на запись
ferget, перепроверил, не работает (
Даже не пойму в чем проблема. Интересно даже самому
Даже не пойму в чем проблема. Интересно даже самому
-
ferget
Re: C/C++ - [решено] Открытие файлов на запись
так попробуйте
Код: Выделить всё
#include <iostream>
#include <fstream>
#include <windows.h>
#include <stdio.h>
using namespace std;
int main()
{
HANDLE hAppend;
DWORD dwBytesRead=10, dwBytesWritten=10, dwPos=0;
hAppend = CreateFile(TEXT("inp.txt"),
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hAppend == INVALID_HANDLE_VALUE)
{
printf("Could not open inp.txt.");
return 0;
}
LockFile(hAppend, dwPos, 0, dwBytesRead, 0);
int k=0;
while(k!=1)
{
cin>>k;
}
UnlockFile(hAppend, dwPos, 0, dwBytesRead, 0);
return 0;
}-
O L E G
Re: C/C++ - [решено] Открытие файлов на запись
Спасибо, в этот раз помогло все. Если не ошибаюсь это функия winapi и она более функциональна чем прошлый код
Интересно, а приемлема такая же блокировка в ключам реестра?
Чуть подредактил твой код,убрал от туда функцию
Код:
работает как надо, файл читаемый но записать и изменить нельзя, Спасибо за помощь еще раз
Интересно, а приемлема такая же блокировка в ключам реестра?
Чуть подредактил твой код,убрал от туда функцию
Код:
Код: Выделить всё
LockFile(hAppend, dwPos, 0, dwBytesRead, 0);работает как надо, файл читаемый но записать и изменить нельзя, Спасибо за помощь еще раз