zu erstellen, verwende ich fopen("aaa\bbb\ccc\myfile.txt","w")
, um Ausgabedatei zu erstellen. Aber die Ordner aaa
, bbb
und ccc
existiert nicht. Was ist der beste Weg, um dieses Problem zu lösen? Gibt es eine Standardmethode, fopen zu bitten, alle benötigten Ordner zu erstellen?Um alle benötigten Ordner mit fopen
Antwort
fopen() wird verwendet, um Eingabestreams für Text- oder Binärdateien und nicht für die Verzeichnisdateien zu öffnen. Wenn Sie Ihre Datei in einem Pfad geöffnet haben möchten, der nicht existierende Verzeichnisse enthält, würde ich vorschlagen, dass Sie die mkdir() -Methode der Headerdatei /sys/stat.h verwenden. Sobald Sie die Verzeichnisse bereit haben, können Sie fopen() verwenden, um die benötigte Datei zu öffnen (oder sie zu erstellen, falls sie nicht bereits vorhanden ist). Dies ist der Ansatz, den ich verwendet, um eine Datei in dem ein Verzeichnis meiner $ HOME Ordner zu erstellen: -
char* home_dir= getenv("HOME");
/*creates the directory with specified modes*/
mkdir(strcat(home_dir, "/make-a-note/"),S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
/*used the strcat() to generate the file-path.*/
personal_work=fopen(strcat(home_dir,"personal_work.txt"),"a+");
Verwenden Sie diesen Code nicht, der 'strcat()' Aufruf ist böse: Er überschreibt definitiv den Puffer, der den Inhalt der Umgebungsvariablen enthält. Dieses undefinierte Verhalten wird wahrscheinlich eine oder mehrere andere Umgebungsvariablen zerstören oder schlimmer. – cmaster
- 1. Wie lösche ich alle nicht benötigten temporären Dateien im Ordner% temp% mit Batch?
- 2. Warum enthält "cabal sdist" nicht alle "zum Erstellen benötigten Dateien"?
- 3. Unit Testen eines Dienstes mit benötigten Systembibliotheken
- 4. Wie überprüfe ich, ob mein Python alle benötigten Pakete hat?
- 5. fopen() mit Fehler auf godaddy
- 6. Problem mit fopen und fwrite
- 7. Alle Binärdateien im Ordner
- 8. Wie javascript_include_tag zu verwenden, um alle Skripte in einem Ordner
- 9. Datei nicht geöffnet PHP fopen
- 10. Ordner "Alle Benutzer"
- 11. Alternative zu fopen() 's Modus "wx" für Windows fopen()?
- 12. Wie schreibt man ALLE URLs beim Überspringen bestimmter Ordner um?
- 13. Alle Ordner rekursiv löschen, die mit
- 14. Mit fopen mit Eingabedateinamen in C
- 15. Wie Sie die benötigten Bibliotheken in den bin-Ordner bekommen, wenn IoC/DI verwendet wird
- 16. fopen gibt nicht zurück
- 17. Ordner mit FolderId abrufen, um den übergeordneten Ordner zu finden
- 18. Wie fopen() auf dem iPhone?
- 19. Python wie man alle Dateien aus einem Ordner löscht. Um den Ordner nicht zu löschen
- 20. php fopen relativer Pfad gebrochen - Mystery
- 21. Kann fopen verwendet werden, um die URL zu öffnen
- 22. Warnung auf PHP fopen
- 23. Bühne alle außer einem Ordner
- 24. Detaillierte Fehler auf fopen
- 25. PHP: fopen() Zugriff verweigert
- 26. Wie alle Dateien im Ordner
- 27. Abrufen einer Liste der von der Anwendung benötigten Assemblys
- 28. Webpack & Bündelung der benötigten Dateien?
- 29. Senden von Postdaten mit fopen oder curl?
- 30. PHP fopen Funktion abgelaufen?
Nein, 'fopen' nie Verzeichnisse machen. Es gibt eine [Frage mit guten Antworten bereits] (http://stackoverflow.com/questions/2336242/recursive-mkdir-system-call-on-unix/11425692) über eine erweiterte 'mkdir()', die mehrere Ebenen macht, die ist ähnlich wie du willst. Sie müssten das mehrstufige mkdir auf '" aaa/bbb/ccc/"' machen und 'fopen' aufrufen. –
Für Windows könnten Sie Informationen in diesem Beitrag http://stackoverflow.com/questions/2834737/creating-new-folders-if-they-dont-exist-for-fopen verwenden – alexJones
Denken Sie daran, diese Backslashes zu verdoppeln, im Allgemeinen das ist . Wird nicht mit dem Problem helfen, da 'fopen()' einfach das Erstellen von Verzeichnissen nicht unterstützt, aber * wenn * die Verzeichnisse existierten, wäre es notwendig. – unwind