Visual Studio 2017, VB: Verständnisfrage zum speichern von Dateien
Moin Kollegen,
ich bin kein Programmierer, habe mich aber jetzt eisern durch ein ganzes Progrämmchen durchgebissen. Nur eine Sache kriege ich dabei nicht gebacken, bzw. verstehe ich beim besten Willen nicht, wie VB mit Ordnerstrukturen umgeht.
Das Programm soll mittels der ZIP-Library von ionic ein ZIP-File in einen am besten temporären Ordner generieren und dort abspeichern. Die ZIP wird anschließend vom Programm per E-Mail versandt und kann danach wieder geIöscht werden. Wenn ich z.B. den Pfad mittels System.Windows.Forms.Application.StartupPath definiere, kann er dort keine Datei abspeichern.
Fehlermeldung:
(echter Pfad durch w,x,y,z ersetzt)
Der False-Ordner existierte zu Anfang nicht, allerdings auch keine Änderung, wenn ich den Ordner händisch anlege.
Versuche ich selbst einen Speicherpfad anzugeben, bspw. "C:\test.zip" kommt die Fehlermeldung
Warum versucht er, eine .tmp-Datei anzulegen? Ist das eine Eigenheit im Debugging-Modus?
Gibt es prinzipiell die Möglichkeit, einen Ordner im Programmverzeichnis anzulegen und VB den Pfad dahin begreiflich zu machen, sodass von dort beliebig Dateien gelesen und geschrieben werden können?
Verzeiht meine etwas dümmliche Fragestellung, mein Programmierwissen ist irgendwo zwischen C64-Assembler und ARexx-Scripten hängengeblieben. Vielleicht ist es auch einfach zu warm...
Danke und lG,
MOS
ich bin kein Programmierer, habe mich aber jetzt eisern durch ein ganzes Progrämmchen durchgebissen. Nur eine Sache kriege ich dabei nicht gebacken, bzw. verstehe ich beim besten Willen nicht, wie VB mit Ordnerstrukturen umgeht.
Das Programm soll mittels der ZIP-Library von ionic ein ZIP-File in einen am besten temporären Ordner generieren und dort abspeichern. Die ZIP wird anschließend vom Programm per E-Mail versandt und kann danach wieder geIöscht werden. Wenn ich z.B. den Pfad mittels System.Windows.Forms.Application.StartupPath definiere, kann er dort keine Datei abspeichern.
Fehlermeldung:
System.IO.FileNotFoundException: "Could not find file 'I:\w\x\y\z\bin\Debug\False'."
(echter Pfad durch w,x,y,z ersetzt)
Der False-Ordner existierte zu Anfang nicht, allerdings auch keine Änderung, wenn ich den Ordner händisch anlege.
Versuche ich selbst einen Speicherpfad anzugeben, bspw. "C:\test.zip" kommt die Fehlermeldung
System.UnauthorizedAccessException: "Der Zugriff auf den Pfad "C:\DotNetZip-kd0oe3kh.tmp" wurde verweigert."
Warum versucht er, eine .tmp-Datei anzulegen? Ist das eine Eigenheit im Debugging-Modus?
Gibt es prinzipiell die Möglichkeit, einen Ordner im Programmverzeichnis anzulegen und VB den Pfad dahin begreiflich zu machen, sodass von dort beliebig Dateien gelesen und geschrieben werden können?
Verzeiht meine etwas dümmliche Fragestellung, mein Programmierwissen ist irgendwo zwischen C64-Assembler und ARexx-Scripten hängengeblieben. Vielleicht ist es auch einfach zu warm...
Danke und lG,
MOS
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 381761
Url: https://administrator.de/contentid/381761
Ausgedruckt am: 24.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
Hi,
grundsätzlich wirst Du Dich an ionic wenden müssen, wenn Du für deren Produkt Support benötigst.
Ich kenne diesen Zipper nicht, aber ...
Wann genau kommt denn diese Fehlermeldung?
E.
grundsätzlich wirst Du Dich an ionic wenden müssen, wenn Du für deren Produkt Support benötigst.
Ich kenne diesen Zipper nicht, aber ...
"Could not find file 'I:\w\x\y\z\bin\Debug\False'."
... suggeriert mir, dass da ein Dateiname erwartet wird, Du aber einen Ordnernamen übergibst. Ist dem so?Wann genau kommt denn diese Fehlermeldung?
System.UnauthorizedAccessException:
Ich schätze, Du hast zum Testen den Pfad mit C:\ unglücklich gewählt. Nimm mal zum Testen den Documents- oder Temp-Ordner des Benutzers, unter welchem das Programm läuft. Oder erstelle einen neuen im %ProgramData% und stell sicher, dass der betreffende Benutzer dort Vollzugriff hat.E.
Hallo,
grundsätzlich muss ich auch sagen der Pfad sieht etwas unglücklich aus. Du wirst Spätestens als normaler User mit dem auch jeder Arbeiten sollte, sogar der Admin, Probleme haben bezüglich Berechtigungen. Windows hat hier ein TEMP Verzeichnis, das sollte man dafür auch verwenden.
Zudem für ein ZIP File brauchst du keine externen Bibliotheken. Das Bringt Windows schon sehr lange mit.
https://msdn.microsoft.com/de-de/library/system.io.compression.zipfile(v ...
Somit hast du auch weniger Sicherheitsproblem durch veraltete Bibliotheken.
grundsätzlich muss ich auch sagen der Pfad sieht etwas unglücklich aus. Du wirst Spätestens als normaler User mit dem auch jeder Arbeiten sollte, sogar der Admin, Probleme haben bezüglich Berechtigungen. Windows hat hier ein TEMP Verzeichnis, das sollte man dafür auch verwenden.
Zudem für ein ZIP File brauchst du keine externen Bibliotheken. Das Bringt Windows schon sehr lange mit.
https://msdn.microsoft.com/de-de/library/system.io.compression.zipfile(v ...
Somit hast du auch weniger Sicherheitsproblem durch veraltete Bibliotheken.
Moin,
Fehlermeldung:
schön - Fehlermeldung hilft...allerdings recht wenig, wenn der Code dazu hier nicht steht
Warum versucht er, eine .tmp-Datei anzulegen? Ist das eine Eigenheit im Debugging-Modus?
nein. So werden häufig Dateien erstellt. Sie heißen .tmp bis sie "fertig" sind und werden erst dann umbenannt
Es gibt von Windows erstellte temporäre Verzeichnisse. Nutze sie.
https://msdn.microsoft.com/de-de/library/system.io.path.gettemppath(v=vs ...
https://msdn.microsoft.com/de-de/library/microsoft.visualbasic.fileio.sp ...
Gruß
Zitat von @MOS6581:
Moin Kollegen,
bzw. verstehe ich beim besten Willen nicht, wie VB mit Ordnerstrukturen umgeht.
na, so wie jedes andere Windows-Programm auchMoin Kollegen,
bzw. verstehe ich beim besten Willen nicht, wie VB mit Ordnerstrukturen umgeht.
Das Programm soll mittels der ZIP-Library von ionic
ich würde das mit Boardmitteln lösenein ZIP-File in einen am besten temporären Ordner generieren und dort abspeichern.
und warum machst du das nicht?Die ZIP wird anschließend vom Programm per E-Mail versandt und kann danach wieder geIöscht werden.
der klassische Anwendungsfall für temporäre DateienWenn ich z.B. den Pfad mittels System.Windows.Forms.Application.StartupPath definiere, kann er dort keine Datei abspeichern.
"blöde" IdeeFehlermeldung:
System.IO.FileNotFoundException: "Could not find file 'I:\w\x\y\z\bin\Debug\False'."
(echter Pfad durch w,x,y,z ersetzt)
hui - geheimDer False-Ordner existierte zu Anfang nicht, allerdings auch keine Änderung, wenn ich den Ordner händisch anlege.
nu kannst nicht in nicht vorhandene Ordner speichern! Eigentlich logischVersuche ich selbst einen Speicherpfad anzugeben, bspw. "C:\test.zip" kommt die Fehlermeldung
starte mal Notepad und tippe "Test" und speichere das unter C:\Test.txt. Na - was hast de da? Die selbe Fehlermeldung! Nur ein wenig ausformulierterSystem.UnauthorizedAccessException: "Der Zugriff auf den Pfad "C:\DotNetZip-kd0oe3kh.tmp" wurde verweigert."
Warum versucht er, eine .tmp-Datei anzulegen? Ist das eine Eigenheit im Debugging-Modus?
Gibt es prinzipiell die Möglichkeit, einen Ordner im Programmverzeichnis anzulegen und VB den Pfad dahin begreiflich zu machen, sodass von dort beliebig Dateien gelesen und geschrieben werden können?
Man speichert keine Daten im Programmverzeichnis, weil da ein normaler User keine Schreibrechte hat!Verzeiht meine etwas dümmliche Fragestellung, mein Programmierwissen ist irgendwo zwischen C64-Assembler und ARexx-Scripten hängengeblieben. Vielleicht ist es auch einfach zu warm...
ich hoffe letzteres - weil du scheiterst eher an Windows-Grundkenntnissen als an VB-Problemen.Es gibt von Windows erstellte temporäre Verzeichnisse. Nutze sie.
https://msdn.microsoft.com/de-de/library/system.io.path.gettemppath(v=vs ...
https://msdn.microsoft.com/de-de/library/microsoft.visualbasic.fileio.sp ...
Gruß