Проверьте это, я проверил.
//put all paths in array reading line by line
string[] paths = System.IO.File.ReadAllLines(@"path-to\list.txt");
//get line by line paths
foreach (string path in paths)
{
if (Directory.Exists(path))
{
//deletes all files and parent
//recursive:true, deletes subfolders and files
Directory.Delete(path, true);
//create parent folder
Directory.CreateDirectory(path);
}
}//end outer for
Передающий предоставленный код игнорирует факт, которые пишут () (или отправляют ()) на сокете, не обязан записать целый буфер.
запишите ()/, отправляют (), мог бы решить записать это частично или не запись вообще, если базовая подсистема отказывается получать больше данных (например, сетевая подсистема может иметь очередь для данных для отправки, и эта очередь уже полна). Это очень вероятно на медленном соединении.
Передающая сторона должна проверить возвращаемое значение записи () для обнаружения, сколько данных было на самом деле записано и корректируется соответственно.
Запись должна быть сделана так или иначе как это:
int readAmount;
while( readAmount = read(file_fd, buffer, BUFSIZE) > 0 )
{
int totalWritten = 0;
do {
int actualWritten;
actualWritten = write (sdaccept, buffer + totalWritten, readAmount - totalWritten);
if( actualWritten == - 1 ) {
//some error occured - quit;
}
totalWritten += actualWritten;
} while( totalWritten < readAmount );
}