LINUX.ORG.RU

Странное удаление файлов


0

1

Вот написал фунцию которая собирает из отдельных файлов один большой.
Проблена в том, что если я удаляю отдельные файлы после копирования, то результирующий файл становиться нулевой длинны. Иде косяк?


char filename[1024*128];
	int i = 0;
	int blocks_nunber = m_file_size/DEFAULT_DL_SEGMENT;
	if(m_file_size%DEFAULT_DL_SEGMENT)
		blocks_nunber++;
	snprintf(filename, sizeof(filename), "%s/%s", m_store_dir.c_str(), m_fn.c_str());
	FILE* pTF = fopen(filename, "w+");
	if(pTF == 0)
	{
		printf("cant open target file for assembling%s\n", filename);
		perror("Error");
		return;
	}

	while(i < blocks_nunber)
	{
		snprintf(filename, sizeof(filename), "%s/%s_dltmp/%s_%lu", m_tempdir.c_str(), m_fn.c_str(), m_fn.c_str(), i);
		FILE* pF = fopen(filename, "r");
		if(pF == 0)
		{
			printf("cant open temp file for assembling%s\n", filename);
			perror("Error");
			fclose(pTF);
			return;
		}
		int n = 0;
		while(n = fread(filename, 1, sizeof(filename), pF))
		{
			fwrite(filename, 1, n, pTF);
		}
		fclose(pF);
		//snprintf(filename, sizeof(filename), "%s/%s_dltmp/%s_%lu", m_tempdir.c_str(), m_fn.c_str(), m_fn.c_str(), i);
		//unlink(filename);
		//printf("removing temp file: %s\n", filename);
		i++;
		
	}
	fclose(pTF);
	i = 0;
	/*while(i < blocks_nunber)
	{
		snprintf(filename, sizeof(filename), "%s/%s_dltmp/%s_%lu", m_tempdir.c_str(), m_fn.c_str(), m_fn.c_str(), i);
		unlink(filename);
		printf("removing temp file: %s\n", filename);
		i++;
		
	}
	snprintf(filename, sizeof(filename), "%s/%s_dltmp", m_tempdir.c_str(), m_fn.c_str());
	rmdir(filename);*/
/**********************************************************/

anonymous

Ответ на: комментарий от imp

спасибо, всё оказалось проще, ф-ция вызывалась несколько раз, чего не предаолагалось.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.