Почему на некоторых путях с двойным обратным sla sh throw не удалось найти часть исключения пути? - PullRequest
0 голосов
/ 27 мая 2020

Например, этот путь и файл не являются исключениями: "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 и не нашел путь:

Not found

, но если я удалю один задний 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 = "";
                }
            }
        }

1 Ответ

1 голос
/ 27 мая 2020

Полный путь к файлу About.cs составляет 244 символа. Длина файла FileDownload_Test.Designer.cs составляет 265 символов.

Ваш путь к File.ReadAllText () не должен быть длиннее 260 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...