2017-10-13 1 views
0

Ich habe eine Textdatei, die von einem Batch-Skript erstellt wird, wo die Feldposition immer gleich sind. Innerhalb dieser Datei möchte ich zu einer bestimmten Position gehen und ein Feld hinzufügen.Schreiben auf eine bestimmte Position einer Datei

Angenommen, meine Datei nur zwei Zeilen und hat folgende Felder:

number customer_id account_no address price plan 
number customer_id account_no address price plan 

Ich möchte ein zusätzliches Feld zwischen Adresse und Preis hinzufügen, damit die neue Datei wie folgt aussehen wird :

number customer_id account_no address newfield price plan 
number customer_id account_no address newfield price plan 

kann ich jede Utility Klasse nicht finden, die zu einer bestimmten Position gehen können eine Zeile in einer Datei und schreibe darauf.


ich die mühsame Art und Weise der Platzierung der Felder auf ein Array einschließlich der Leerzeichen tun konnte und es aus Feld für Feld in eine neue Datei, aber spucken, das war zu umständlich und sehr langwierig (da es mehr hat als 90 Felder) und fragte sich, ob es einen einfacheren Weg gibt.

+0

Warum kann das Batch-Script upstream nicht erweitert werden, um dies zu tun? Es wäre einfacher und weniger riskant als die Implementierung dieses Downstream. – Makoto

+0

@Makoto Ja, ich stimme zu, wir haben eine Geschichte, die das in Zukunft tun wird, aber das Team, das diese Datei erhält, kann es nicht ausrichten. Außerdem gibt es eine geringfügige Verarbeitung dieser Datei, die ich nicht erwähnt habe. – Luffy

+0

@Luffy Ist die Anzahl der Spalten für alle Zeilen in der Textdatei gleich? – user3437460

Antwort

0

Vergessen Sie das Anhängen an die Mitte der Datei. Dateien sind eine Folge von Bytes. Sie müssen also alle Bytes nach dem Einfügen von Punkten verarbeiten, um sie um N Bytes vorwärts zu verschieben, um einen Platz für Ihre Änderung zu erstellen. Dies kostet mehr, als Datei direkt zu verarbeiten und neue Zeilen in eine andere Datei zu schreiben.

1

ich die mühsame Art und Weise der Platzierung der Felder auf ein Array einschließlich der Leerzeichen tun konnte und es aus Feld für Feld in eine neue Datei, aber spucken, das war zu umständlich und sehr langwierig (da es mehr hat als 90 Felder) und fragte sich, ob es einen leichteren Weg gibt.

Wenn Sie dies mit Java tun würden, gibt es keine Möglichkeit, Daten zwischen Text einzufügen. Sie können nur an das Ende der Datei anhängen.

Wenn Sie eine neue Spalte einfügen und die Formatkonsistenz der gesamten Datendatei beibehalten müssen, müssen Sie einen Leerraum für diese Zeilen ohne Wert einfügen. Daher ist das Umschreiben aller Zeilen immer noch erforderlich.

ich keine Utility-Klasse finden konnte, die es auf eine bestimmte Position einer Zeile in einer Datei und schreiben gehen

Wenn Sie nicht finden können, können Sie selbst eine Beurteilung schreiben . Es ist eigentlich nicht so langweilig. Schreiben Sie einfach eine Utility-Klasse selbst, damit Sie sie in Zukunft verwenden können.

//A brief example.. 

public final class FileUtility{ 

    private static String filepath; 

    public static void setFilePath(String filepath){ 
     FileUtility.filepath = filepath; 
    } 

    public static int searchField (String fieldname, int lineNo){ 
     //return position of given field namein a specific line 
    } 

    public static void insertDataAt (String data, int column){ 
     //return position of given field 
    } 

    public static boolean dataExist(String data, int lineNo){ 
     //return true if given data exist at given line number 
    } 
} 
+0

Also der einzige Weg für mich wird es sein, jede Spalte der Zeile zu lesen.Es gibt keine Möglichkeit, zu einer bestimmten Spalte dieser Zeile zu gehen, wenn ich die Position dieser Spalte kenne. – Luffy

+0

@Luffy Nein, in Java nicht möglich. Aber Sie können Ihre eigene Klasse schreiben, um das zu tun. In Ihrer eigenen Klasse, lesen Sie Zeile für Zeile .. etc (all die langweiligen Sachen). Aber das nächste Mal, wenn Sie an einer bestimmten Position einfügen müssen, wird es nur ein Einzeiler sein. – user3437460

+0

Gotcha danke! – Luffy

Verwandte Themen