Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Открытие файлов на запись

Ответить
Настройки темы
C/C++ - [решено] Открытие файлов на запись

Аватара для O L E G

Старожил


Сообщения: 284
Благодарности: 16


Конфигурация

Профиль | Отправить PM | Цитировать


Подскажите код, с помощью которого можно открыть файлы на запись или установить защиту на него, Но при этом что бы я мог считать с него данные, но нем мог их записать и удалить сам файл. За ранее спасибо

Отправлено: 17:26, 23-05-2012

 

Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    fstream fin;
    fin.open("input.txt", fstream::in);

    return 0;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:37, 23-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для O L E G

Старожил


Сообщения: 284
Благодарности: 16

Профиль | Отправить PM | Цитировать


Работает!
НО на чтение (не возможно перенести,удалить,переименовать) но можно записать в него!!!
Подскажи, как сделать так что бы было только чтение на файле, но записать нельзя было бы в него.
Будет проблема еще с записью потому что на файле стоит Read Only, надо снять его, после открыть на запись и снова установить чтение
Помогите, я только начинаю поэтому не которые аспекты Трудно найти
Спасибо

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Последний раз редактировалось O L E G, 30-05-2012 в 16:53.


Отправлено: 15:47, 30-05-2012 | #3


Аватара для O L E G

Старожил


Сообщения: 284
Благодарности: 16

Профиль | Отправить PM | Цитировать


Пробовал
Код: Выделить весь код
 -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, как поставить защиту от записи,но на чтение оставить

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Последний раз редактировалось O L E G, 30-05-2012 в 17:21.


Отправлено: 17:05, 30-05-2012 | #4


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


вот простой пример
на время работы программы снимается атрибут readonly, в файл записать нельзя

Код: Выделить весь код
#include <iostream>
#include <fstream>

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;
}

Отправлено: 03:37, 31-05-2012 | #5


Аватара для O L E G

Старожил


Сообщения: 284
Благодарности: 16

Профиль | Отправить PM | Цитировать


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;
}
Все работает,кроме (опять же запись в файл производиться)

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Отправлено: 09:46, 31-05-2012 | #6


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Цитата O L E G:
Дальше стоит окно и не каких действий!»
так никаких действий быть и не должно, если введете 1, программа завершит работу

Цитата O L E G:
Причем запись произвести удаеться в файл »
странно, у меня работает так, можно открыть файл, блокнотом, можно написать в блокноте, но при сохранении пишет "файл занят другим процессом"

Отправлено: 09:57, 31-05-2012 | #7


Аватара для O L E G

Старожил


Сообщения: 284
Благодарности: 16

Профиль | Отправить PM | Цитировать


ferget, перепроверил, не работает (
Даже не пойму в чем проблема. Интересно даже самому

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Последний раз редактировалось O L E G, 31-05-2012 в 17:43.


Отправлено: 14:45, 31-05-2012 | #8


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


так попробуйте

Код: Выделить весь код
#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;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:09, 01-06-2012 | #9


Аватара для O L E G

Старожил


Сообщения: 284
Благодарности: 16

Профиль | Отправить PM | Цитировать


Спасибо, в этот раз помогло все. Если не ошибаюсь это функия winapi и она более функциональна чем прошлый код

Интересно, а приемлема такая же блокировка в ключам реестра?


Чуть подредактил твой код,убрал от туда функцию
Код: Выделить весь код
LockFile(hAppend, dwPos, 0, dwBytesRead, 0);
работает как надо, файл читаемый но записать и изменить нельзя, Спасибо за помощь еще раз

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Последний раз редактировалось O L E G, 01-06-2012 в 09:33.


Отправлено: 08:11, 01-06-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Открытие файлов на запись

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - открытие файлов office 2007 tyrin Microsoft Office (Word, Excel, Outlook и т.д.) 5 22-11-2011 18:39
Разное - Необычное открытие файлов Chijik Программирование и базы данных 29 09-02-2011 06:53
Долгое открытие файлов по сети Altaranenco Microsoft Windows NT/2000/2003 5 18-10-2006 16:25
открытие файлов *.aspx bezumes Хочу все знать 1 07-03-2006 19:19
Открытие заархивированных файлов marchl Хочу все знать 11 13-09-2003 21:43




 
Переход