Property- Keys und Values mit Tab getrennt

Hallo,
ich versuche seit längerer Zeit vergebens, alle Property-Werte aus einer .property-Datei erst einzulesen, und dann die Keys und Values mit einem Tabstop von einander getrennt in eine .xlsx-Datei auszuleiten. Ich wollte dies so umsetzen, dass eine einfache .txt datei erzeugt wird und dort Key + Value mit einem Tabstop getrennt sind, dies kann man danach einfach in Excel kopieren.

Ich habe mehrere Möglichkeiten gefunden, alle Werte nacheinander auszugeben. Zudem gibt es die Möglichkeit, fest definierte Keys und Values voneinander zu trennen und auszugeben, jedoch ist das nicht möglich, da sich die .properties-Datei immer wieder verändern wird und somit eine Lösung benötigt wird, dass


Bei mir wird momentan die komplette Konsolenausgabe als .txt geloggt, somit muss ich nur noch die Ausgabe abändern, sodass die Gleichheitszeichen mit einem \t ausgetauscht werden. (Sorry für diese unsaubere Beschreibung...).

Beispiel:
aktuelle Ausgabe: database=test
Soll-Ausgabe: database \t test


Kennt ihr eine Möglichkeit, anstelle von den "="-Zeichen einen Tabstop (\t) zu verwenden? Es ist auch komplett egal, wie unsauber der Code ist/wäre, ich möchte nur endlich eine Lösung finden, ich bin echt am verzweifeln...

mein Code sieht wiefolgt aus:
Java:
package com.jetbrains;


import java.io.*;
import java.util.Properties;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        logtotxt.main(args);

        Properties pro = new Properties();
        Writer writer = null;
        Reader reader = null;
        try {
            reader = new FileReader("test.properties");

            Properties prop1 = new Properties();
            prop1.load(reader);

            Properties prop = new Properties(System.getProperties());
            prop1.list(System.out);

            writer = new FileWriter("h:/TEMP/properties.txt");
            prop1.store(writer, "Kommentar");

        }
        catch ( IOException e )
        {
            e.printStackTrace();
        }
        finally
        {
            try { writer.close(); } catch ( Exception e ) { }
            try { reader.close(); } catch ( Exception e ) { }
        }
    }
}
 
K

kneitzel

Gast
Also ich verstehe Deinen Code nicht, denn du holst Dir z.B. die System-Properties ohne irgend etwas damit zu machen ...

Aber wenn Du Properties hast und Du willst alle Properties durchgehen, dann kannst Du Properties.propertyNames() nutzen um eine enumerartion zu bekomen. Diese Enumeration kannst Du dann durchgehen um mit den einzelnen Werten zu machen, was immer Du willst.
 

VfL_Freak

Top Contributor
Moin,

bin mir zwar sicher, ob ich wirklich verstanden habe, was Du möchtest, aber versuch mal den Befehl "replace" !
Du solltest dann dabei das tabulatorzeichen auch excapen, also "\\t" statt "\t" !

Gruß Klaus
 
K

kneitzel

Gast
Das, was ich mir so vorgestellt habe (über Properties) wäre halt etwas wie
Code:
import java.io.*;
import java.util.Enumeration;
import java.util.Properties;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        Writer writer = null;
        Reader reader = null;
        try {
            reader = new FileReader("test.properties");
            writer = new FileWriter("h:/TEMP/properties.txt");

            Properties prop1 = new Properties();
            prop1.load(reader);
            Enumeration enumeration = prop1.propertyNames();
            while (enumeration.hasMoreElements()) {
                String key = (String) enumeration.nextElement();
                String value = (String) prop1.get(key);
                writer.write(key + " \t " + value + "\n");
            }
        }
        catch ( IOException e )
        {
            e.printStackTrace();
        }
        finally
        {
            try { writer.close(); } catch ( Exception e ) { }
            try { reader.close(); } catch ( Exception e ) { }
        }
    }
}
 
K

kneitzel

Gast
Da es sich bei den Properties um ein "set of properties" handelt, ist es ohne Reihenfolge. Über den Weg mit den Properties wirst Du das so nicht lösen können.
 
Ich mal wieder...
Mir ist aufgefallen, dass es immer wieder Fehler im Key gibt: Wenn im Key ein Leerzeichen vorhanden ist, wird dies als "=" verarbeitet, also alles nachfolgende wird als Value verarbeitet. Ich habe versucht, eine andere Methode zum einlesen zu verwenden, doch es kommt der gleiche Fehler auf.
Ich habe die Vermutung, dass dies an der Enumeration liegt?

Beispiel: DiesIstderTest Key=Beispiel-Value
Verarbeitung: DiesIstDerTest = Key=Beispiel-Value
Key Value
 

Thallius

Top Contributor
Wozu überhaupt der Umweg über die Properties? Liest die Datei ein, ersetze alle = durch ein TAB und gut ist. Aber selbst das ist total unnötig, denn in Excel kann man beim CSV Import das Trennzeichen auch selber wählen und da brauchst du nur das = nehmen,

Gruß

Claus
 
oke, habe mir einen Workaround gebastelt, wenn man die Leerzeichen durch \u0200 ersetzt, funktioniert es und in der Ausgabe wird das automatisch wieder umgewandelt :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E System property setzten Allgemeine Java-Themen 8
ralfb1105 Java LogManager property bestimmen/ausgeben Allgemeine Java-Themen 1
VfL_Freak JDK installieren System-Property "user.dir" Allgemeine Java-Themen 6
S Datentypen Warum ist bei Arrays die Länge als Property aufrufbar? Allgemeine Java-Themen 1
H Liste sortieren anhand optionalem Property Allgemeine Java-Themen 3
L Gibt es in Java einen Property Editor? Allgemeine Java-Themen 2
T @NotBlank verwendet nicht message aus .property-File Allgemeine Java-Themen 4
U Property File - Gruppieren/Strukturieren Allgemeine Java-Themen 5
C Property-File lesen und schreiben Allgemeine Java-Themen 20
S Property File auslesen Allgemeine Java-Themen 19
Y Property Datei einlesen Allgemeine Java-Themen 2
U Property Grid für java? Allgemeine Java-Themen 12
G suche Property alternative Allgemeine Java-Themen 4
K "Too many open files" bei Property List Allgemeine Java-Themen 5
J java beans property editor Allgemeine Java-Themen 3
P Property Problem ! Allgemeine Java-Themen 8
foobar java.library.path Property setzen Allgemeine Java-Themen 5
D Property File auslesen in JTextFiled Allgemeine Java-Themen 4
C struts <html:checkbox property="Array[x]"> ? Allgemeine Java-Themen 2
D API Keys mehrmals verwenden Allgemeine Java-Themen 6
P Löschen eines keys in einer SortedMap Allgemeine Java-Themen 5
S speichern von RSA-Keys Allgemeine Java-Themen 1
J Map mit mehrspaltigen Keys Allgemeine Java-Themen 5
B Variablen Alle RenderingHints.Keys (KEY_*) in Array + alle RenderingHints.Keys (VALUE_*) in Object[] Allgemeine Java-Themen 8
L Sicherstellen das 2x die gleichen Daten unter bestimmten Keys enthalten sind. Allgemeine Java-Themen 6
L HashMap mit Enum Keys Allgemeine Java-Themen 3
J Eindeutige ID für Objekte als Keys in TreeMap Allgemeine Java-Themen 12
P HashMap mit mehreren gleichen keys Allgemeine Java-Themen 4
@ [Sicherheit] Speicherung von Keys für Verschlüsselung Allgemeine Java-Themen 4
L Alle Keys eines ResourceBundle Allgemeine Java-Themen 3
G Einzelne Keys aus Properties-Datei auslesen Allgemeine Java-Themen 4
T HashMap values Bearbeitung Allgemeine Java-Themen 4
T Hashmap Values Bearbeitung Allgemeine Java-Themen 1
M Java komplexe Map mit 2 values ? Allgemeine Java-Themen 8
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
S Int Values sortieren Allgemeine Java-Themen 7
F 1 Key - mehrere Values Allgemeine Java-Themen 3
T HashMap#values Reihenfolge Allgemeine Java-Themen 13
J HashMap nach values sortieren Allgemeine Java-Themen 2
C Map(Key/Value) mit mehreren Values Allgemeine Java-Themen 16

Ähnliche Java Themen

Neue Themen


Oben