Ich habe Code in C #, der einige Bilder von einem absoluten Pfad zu einem Verwandten enthält, so dass das Bild gefunden werden kann, egal wo sich die Anwendung befindet.
Zum Beispiel ist der Pfad in meinem Code (und in meinem Laptop für das Bild)
%Vor%und ich möchte, dass der Pfad in meinem Code
ist %Vor% So kann es laufen, wo auch immer der Ordner abgelegt wird, egal wie der Name der C:
Partition ist usw.
Ich möchte einen Pfad in meinem Code haben, der unabhängig vom Speicherort des Anwendungsordners ist oder sich in einer anderen Partition befindet, solange er sich im selben Ordner wie der Rest der Lösung befindet.
Ich habe diesen Code:
%Vor%Dieser Code läuft nur, wenn die Datei und der Ordner sich in diesem bestimmten Pfad befinden (der auch der Ort des Codes ist). Ich möchte, dass dieser Pfad relativ ist, also wo immer ich den ganzen Ordner (Code, Dateien usw.) ablege Programm wird immer noch so lange arbeiten, wie der Code (der unter Projektordner ist) an der gleichen Stelle mit dem Ordner Bilder ... was soll ich tun?
Relative Pfade basieren auf der Binärdatei, aus der Ihre Anwendung ausgeführt wird. Standardmäßig werden Ihre Binärdateien in [directory of your .csproj]
/ bin / debug ausgegeben. Angenommen, Sie möchten Ihren Bilderordner auf derselben Ebene wie Ihr .csproj erstellen. Dann können Sie auf Ihre Bilder mit dem relativen Pfad "../../images/someImage.jpg" zugreifen.
Um ein besseres Gefühl dafür zu bekommen, versuchen Sie folgendes als Test:
1) Erstellen Sie ein neues visuelles Studio-Beispielprojekt,
2) Erstellen Sie einen Bilderordner auf der gleichen Ebene wie die .csproj
3) Legen Sie einige Dateien in den Bilderordner
4) fügen Sie diesen Beispielcode in Ihre Hauptmethode ein -
%Vor%Sie sollten die relativen Pfade aller Dateien sehen, die Sie in Schritt (3) platziert haben.
Abhängig von der Konfiguration Ihres Programms können Sie möglicherweise einen relativen Pfad verwenden, indem Sie einen Teil der vollständigen Pfadzeichenfolge überspringen. Es ist nicht prahlerisch, also könnte J. Skit dafür glänzend sein, aber ich habe den Eindruck, dass du es einfach zum Laufen bringen willst. Schönheit ist eine spätere Sorge.
%Vor% Sie könnten dann, wenn Sie wollen / wünschen, die Zahl 13 (die ein hässlicher und unerwünschter Ansatz ist, aber trotzdem funktioniert) gegen eine dynamisch berechnete austauschen. Zum Beispiel (angenommen, dass das Verzeichnis "HereWeStart", wo der relative Pfad beginnt, das erste Vorkommen dieser Zeichenfolge in absolutePath
ist), könnten Sie wie folgt vorgehen.
Auch Ihre Frage wirft eine andere Frage auf. Ich würde gerne wissen, wie du den absoluten Pfad erreichst. Vielleicht gibt es einen noch schlaueren Weg, die Hektik alle zusammen zu vermeiden?
BEARBEITEN
Sie können auch den folgenden Ansatz ausprobieren. Vergessen Sie die Directory
-Klasse, die Ihnen einen absoluten Pfad gibt. Gehe für den relativen Pfad direkt weg. Ich nehme an, dass alle Dateien, die Sie entfernen möchten, sich im selben Verzeichnis befinden. Wenn nicht, müssen Sie weitere Zeilen hinzufügen, aber wir überqueren diese Brücke, wenn wir dort ankommen.
Vergessen Sie nicht, eine Antwort als grün markiert zu markieren (oder zu erklären, was noch fehlt oder verbesserungsfähig ist).
%Vor%Beachten Sie auch, dass ich mir erlaubt habe, Ihre Ausnahmebehandlung zu ändern. Während Ihr funktioniert ist es ein besserer Stil, sich auf das integrierte Messaging-System zu verlassen. Auf diese Weise erhalten Sie professionellere Fehlermeldungen. Nicht, dass wir zur Laufzeit irgendwelche Fehler bekommen, oder? ;)
Tags und Links c#