#include <windows.h>
#include <string>
#include <stdio.h>
#include <iostream>
#include <stdio.h>
using namespace std;
// перевод строки
LPCTSTR ToLPCTSTR (string Path)
{
LPCSTR from_string = Path.c_str();
LPWSTR to_string = new WCHAR[512];
MultiByteToWideChar(
CP_ACP, // code page
MB_PRECOMPOSED, // character-type options
from_string, // string to map
-1, // number of bytes in string
to_string, // wide-character buffer
256 // size of buffer
);
LPCTSTR to_string_return = to_string;
return to_string_return;
};
void Create(string Path,string Name)
{
string path ;
string path1;
path = Path;
path1= path + Name;
CreateFile(ToLPCTSTR(path1),
NULL,
NULL,
NULL,
CREATE_ALWAYS,
NULL,
NULL);
path.clear();
path.clear();
};
/*****************************************************************************
* функция удаления файла *
******************************************************************************/
void Remove(string Path)
{
string str;
str = Path;
LPCTSTR ss = L"не удалился";
if(DeleteFile(ToLPCTSTR(str)) == NULL)
{
MessageBox(NULL,ss,NULL,MB_OK);
};
str.clear();
}
int main()
{
string new_f("C:\\");//путь где создавать
string new_n("123.txt");// имя файла
Create(new_f,new_n);
string ss1;
ss1 = new_f+new_n;
Remove(ss1);
getchar();
}
Удалить файл во время работы приложения а не после закрытия окна
удаление происходить и функция удаления ворачивает не NULL как и должна если всё нормально, но вот если консоль или приложение MFC или какое другое приложение не закрывается (окно всмысле) то файл висит к примеру на диске С смотрю разными менеджерами он весит не удалённый, как только закрываю окно то он сразу же пропадает в чём может быть проблема никто не сталкивался с этим??
вот код
Код:
Закрой сначала файл, перед удалением.
Вот что пишут в Win32Programmers reference: CloseHandle invalidates the specified object handle, decrements the object's handle count, and performs object retention checks. Once the last handle to an object is closed, the object is removed from the operating system.
А при закрытии программы этот самый хендл и чистится, соответственно файл удаляется. Соответственно тебе надо зделать такое
Код:
ss1 = new_f+new_n;
CloseHandle(filehandle);
Remove(ss1);
CloseHandle(filehandle);
Remove(ss1);
, де filehandle - хендл файла полученный из CreateFile
Цитата: iridum
Код:
ss1 = new_f+new_n;
CloseHandle(filehandle);
Remove(ss1);
CloseHandle(filehandle);
Remove(ss1);
, де filehandle - хендл файла полученный из CreateFile
спасибо разобрался забыл просто вообще про этот хендл в остальных функциях закрывал а тут забыл хоть убей и не мог понять что за хз такое))