Например, этот путь и файл не являются исключениями: "E: \ Samsung Galaxy S9 \ Danny Backup \ Восстановленные данные 02-10 18_32_36 \ 1 (D) NTFS \ C -Sharp \ Download File \ Downloading-File -Project-Version-006 \ Image-Downloader \ Downloading-File-Project-Version-005 \ Download File \ Downloading File \ Downloading File \ About.cs "
, но затем на другой путь к файлу, который он бросает исключение Не удалось найти часть пути:
Не удалось найти часть пути "E: \ Samsung Galaxy S9 \ Danny Backup \ Восстановленные данные 02-10 18_32_36 \ 1 (D) NTFS \ C -Sharp \ Download File \ Downloading-File-Project-Version-006 \ Image-Downloader \ Downloading-File-Project-Version-005 \ Download File \ Downloading File \ Downloading File \ FileDownload_Test.Designer.cs "
Я проверил, что руководство в проводнике переместилось на этот путь, и файл там существует, и я могу отредактировать файл с помощью блокнота.
Я также попытался в проводнике файлов перейти к пути с двойным назад sla sh и не нашел путь:
, но если я удалю один задний sla sh, он найдет путь, по которому он попадет в путь. если я попытаюсь найти путь, включая имя файла, он выдаст мне сообщение в проводнике, что путь длиннее 269 символов.
песок при просмотре StackTrace исключения, которое я вижу:
в System.IO .__ Error.WinIOError (код ошибки Int32, String может бытьFullPath) в System.IO.FileStream.Init (строковый путь, режим FileMode, доступ к FileAccess, права Int32, логические права использования, общий ресурс FileShare, Int32 bufferSize, параметры FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) в System.IO.FileStream..ctor (путь к строке, режим FileMode, доступ к FileAccess, общий ресурс FileShare, параметры BuffSize Int32, параметры msgOptions , Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) в System.IO.StreamReader..ctor (String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost) в System.IO.File.InternalReadAllText (путь кодирования. Boolea n checkHost) в System.IO.File.ReadAllText (путь строки) в Search_Text_In_Files.Form1.DirSearch (String rootDirectory, String filesExtension, String [] textToSearch, BackgroundWorker worker, DoWorkEventArgs e) в E: \ Samsung Galaxy S9 \ Danny Backup \ Восстановленные данные 02-10 18_32_36 \ 1 (D) NTFS \ C -Sharp \ Search_Text_In_Files \ Search_Text_In_Files \ Search_Text_In_Files \ Form1.cs: строка 275
Строка 275:
var tempFR = File.ReadAllText(file);
Я не понимаю, в чем проблема с файлом FileDownload_Test.Designer.cs, почему первый файл About.cs был в порядке, а второй выдает исключение. оба файла существуют и их можно редактировать / открывать.
Я запуталась. может в проводнике я могу добраться до файлов, а в программе почему-то нет?
int numberofdirs = 0;
void DirSearch(string rootDirectory, string filesExtension, string[] textToSearch, BackgroundWorker worker, DoWorkEventArgs e)
{
List<string> filePathList = new List<string>();
int numberoffiles = 0;
try
{
filePathList = SearchingCore.SearchAccessibleFilesNoDistinct(rootDirectory, null, worker, e,_isbackgroundbusy,
textBoxSetFileExtensions, lblretrievedfiles,lblrestrictedfiles).ToList();
}
catch (Exception err)
{
}
lblphases.Invoke((MethodInvoker)delegate
{
lblphases.Text = "Phase 2: Searching in files";
});
MyProgress myp = new MyProgress();
myp.Report4 = filePathList.Count.ToString();
foreach (string file in filePathList)
{
try
{
var tempFR = File.ReadAllText(file);
_isbackgroundbusy.WaitOne();
if (worker.CancellationPending == true)
{
e.Cancel = true;
return;
}
bool reportedFile = false;
for (int i = 0; i < textToSearch.Length; i++)
{
if (tempFR.IndexOf(textToSearch[i], StringComparison.InvariantCultureIgnoreCase) >= 0)
{
if (!reportedFile)
{
numberoffiles++;
myp.Report1 = file;
myp.Report2 = numberoffiles.ToString();
myp.Report3 = textToSearch[i];
myp.Report5 = FindWordsWithCountRegex(tempFR, textToSearch).ToString();
backgroundWorker1.ReportProgress(0, myp);
reportedFile = true;
}
}
}
numberofdirs++;
lblsearchedfiles.Invoke((MethodInvoker)delegate
{
lblsearchedfiles.Text = string.Format("{0}/{1}", numberofdirs, myp.Report4);
lblsearchedfiles.Visible = true;
});
}
catch (Exception err)
{
string fff = "";
}
}
}