Datei speichern ->im UNIX Format?



  • Hi Leute!

    Ich habe ein Problem mit dem speichern von Dateien. Die Dateien sollen für einen Unix-Server sein. Da Windows-Dateien das Zeilenende mit "\r\n" speichern, und unix mit "\n" am Ende.

    Nur versteh ich nicht, wieso mit dem WriteString("\n"); -Befehl (bei W2k und W98SE) immer DOS gespeichert wird. Ich sehe das mit dem Programm UltraEdit, das immer DOS-Modus anzeigt. Ich könnte jetzt jedesmal ->ins UNIX-Format konvertieren anklicken, doch ist mir das zu umständlich.

    Warum ich alles so kompliziert mache? Wenn ich den Apache Server auf meinem Windows PC laufen habe, und diese Datei abfrage, kommt nur Müll raus. Wenn es im UNIX-Format ist, geht es. Noch dazu: Wenn die Dateien aus nen FTP-Server geladen werden, wird es scheinbar automatisch ins UNIX-Format umgewandelt.

    Wie kann ich eine Zeichenfolge im UNIX-Format speichern?

    Gruß Ronny



  • Immer wieder ein leidiges Thema, das mit den unterschiedlichen Zeilenumbruchkonventionen zwischen DOS und Unix.

    Als Abhilfe seh ich nur:
    verwende streams, bei denen du die genaue Kontrolle über die ausgegebene Zeichenfolge hast.
    Aber nicht endl oder '\n' verwenden, stattdessen
    char(0x0a);
    für einen Unix Zeilenumbruch.

    const char UNIX_LINEBREAK = 0x0a;
        ofstream os("test.txt");
        os << "1" << endl;
        os << "2" << '\n';  //DOS-Systeme schreiben auch hier ein \r\n !!!
        os << "3" << UNIX_LINEBREAK
        os << "4";
    

    ergibt folgende Ausgabe (mit Zeilenumbruch-Codes in eckigen Klammern):
    1[CR][LF]
    2[CR][LF]
    3[LF]
    4

    PS:
    Ja, FTP wandelt die Zeilenümbrüche im ASCII mode automatisch um.
    Deshalb gibt's den Modus im wesentlichen.
    Im BIN-Modus wird nichts gewandelt.

    [ Dieser Beitrag wurde am 14.03.2003 um 13:53 Uhr von scrontch editiert. ]


Anmelden zum Antworten