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, botów: 0