Nieprawidłowy znak w ścieżce

0

Tutaj trzymam ścieżkę pliku:

 ZarzadzaniePlikami.WczytajPlik(sciezkaPliku)

Tutaj mam kod:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WpfApp1.klasy;

namespace WpfApp1.klasy
{
   class ZaciemnianiePlikow
   {
       internal static void Zaciemnij(string sciezkaPliku, bool? usunKomentarze)
       {
           string liniaTekstu;
           StreamReader plik = ZarzadzaniePlikami.WczytajPlik(sciezkaPliku);
           //StreamReader sciezkadoZapisu = ZarzadzaniePlikami.WczytajPlik(sciezkaPliku);
           //string tmpStr = sciezkadoZapisu.ReadToEnd();
          // string sciezkaGosciu = Path.Combine(sciezkadoZapisu.ReadToEnd(), "Zac");
           while ((liniaTekstu = plik.ReadLine()) != null)
           {
               if (usunKomentarze == true)
               {
                   int indexKomcia = liniaTekstu.IndexOf("//");
                   if (indexKomcia != -1)
                   {
                       liniaTekstu = liniaTekstu.Substring(0, indexKomcia);
                   }  
               }
               else
               {
                   
               }
           }
           string filePath = (ZarzadzaniePlikami.WczytajPlik(sciezkaPliku)).ReadToEnd();
           // scieżka pliku
           string directoryPath = Path.GetDirectoryName(filePath); // scieżka do folderu gdzie znajduje się dany plik
           string subdirectoryPath = Path.Combine(directoryPath, "dodatkowy"); // sciezka folderu wewnątrz folderu z plikiem
           if (!Directory.Exists(subdirectoryPath)) Directory.CreateDirectory(subdirectoryPath); // tworzenie subfolderu
           string newFilePath = Path.Combine(subdirectoryPath, "newFileName"); // ścieżka do nowego pliku
           //Directory.CreateDirectory(tmpStr);
           plik.Close();
       }
   }
}

I pojawia się błąd dołączony na screenie. Co robić?

1

Zobacz na debugerze co masz w zmiennej filePath jest tam odczytana zawartość całego pliku, a nie ścieżka do niego (widać zresztą na załączonym screenie). Nie chciałeś się odwołać przypadkiem Path.GetDirectoryName(sciezkaPliku)?

1

filePath nie jest nullem tylko zawiera niedozwolone znaki, a to różnica. Masz w tej zmiennej odczytaną całą zawartość pliku i potem próbujesz to wykorzystać jako ścieżke.

Ta linia odczytuje zawartość pliku do zmiennej filePath:

string filePath = (ZarzadzaniePlikami.WczytajPlik(sciezkaPliku)).ReadToEnd();

i potem próbujesz

string directoryPath = Path.GetDirectoryName(filePath);

jeżeli chcesz odczytać folder gdzie znajduje się plik (co wskazuje komentarz) to zrób

string directoryPath = Path.GetDirectoryName(sciezkaPliku);

1 użytkowników online, w tym zalogowanych: 0, gości: 1