fileoutputstream ändern

alex8686

Mitglied
hallo leute, bräuchte eure kleine hilfe wie dem auch sei :) würde gerne meine Userregistrierung vom chat etwas umgestalten um auch andere projekte an die datenbank anzubinden.!

bsp: nickname³passwort³23³7³297³#99ccff³14.07.2011 06:26:35³ <-- so wird es momentan gespeichert, in einem textfile. also username.txt

würde es aber gerne so haben wollen zb:
nickname=admin
passwort=passwort
alter=23

hier ein kleiner ausschnitte aus dem javaquellcode , der ist für die userregistrierung zuständig:

Java:
SPEICHERN:
    public void userchanged(String s)
    {
        String s1 = "";
        Object obj = null;
        boolean flag = false;
        try
        {
            String as[] = (String[])users.get(s.toLowerCase());
            if(as[0].indexOf("/") == -1 && as[0].indexOf(".") == -1)
            {
                FileOutputStream fileoutputstream = new FileOutputStream("db/" + as[0] + ".txt");
                PrintStream printstream = new PrintStream(fileoutputstream);
                String s2 = "";
                for(int i = 0; i < 22; i++)
                {
                    if(as[i] != null && as[i].indexOf("\263") != -1)
                        as[i] = master.pstring.replace(as[i], "\263", "");
                    s2 = s2 + as[i] + "\263";
                }

                printstream.println(s2);
                fileoutputstream.close();
            }
        }
        catch(Exception exception)
        {
            System.out.println(exception.toString());
        }
    }

AUSLESEN:
    public void loadFromZip()
    {
        try
        {
            System.out.println("Registrierte Benutzer werden geladen");
            users.clear();
            File file = new File("db");
            String as[] = file.list();
            for(int i = 0; i < as.length; i++)
                try
                {
                    FileInputStream fileinputstream = new FileInputStream("db/" + as[i]);
                    DataInputStream datainputstream = new DataInputStream(fileinputstream);
                    String s = "";
                    for(String s1 = ""; (s1 = datainputstream.readLine()) != null;)
                        s = s + s1;

                    String as1[] = (String[])readNext(s);
                        users.put(as1[0].toLowerCase(), as1);
                    fileinputstream.close();
                }
                catch(Exception exception1) { }

            Registry _tmp = this;
            ChatServer.readuser = "0";
        }
        catch(Exception exception) { }
    }
ich sag keinem das er das für mich machen soll, sondern nur tipps wenn möglich. achja ³ = \263

Mfg und danke im vorraus!:)
 
Zuletzt bearbeitet von einem Moderator:

Monaria

Aktives Mitglied
Meinst du so etwas?
Du könntest nebenbei gesagt auch Properties nehmen :)

Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Scanner;

public class Test {
	private static void write(String s1, String s2, String s3){
		FileOutputStream fos;
		try {
			fos = new FileOutputStream(new File("Pfadangabe"));
			fos.write(("name=" + s1).getBytes());
			fos.write(("\npasswort=" + s2).getBytes());
			fos.write(("\nalter=" + s3 ).getBytes());
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private static Object[] read(File f){
		ArrayList<String> str = new ArrayList<String>();
		try {
			Scanner sc = new Scanner(new FileInputStream(f));
			while(sc.hasNextLine()){
				str.add(sc.nextLine());
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return str.toArray();
	}
	
	public static void main(String[] args){
		write("Hans", "qwert", "10");
		for(Object s : read(new File("Pfadangabe")))
			System.out.println(s);
	}
}
 

Volvagia

Top Contributor
Das finde ich sogar noch flexibler, wenn z. B. ein Parameter in der Mitte hinzukommt. Da hätte man mit dem Array grobe Probleme.

Java:
package javaforum;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Pattern;

public class SaveNLoad
{
	private static final String SAVE_ARGUMENT = "username=%s\npassword=%s\nage=%s";
	private static final int NEEDING_ARGUMENTS;
	
	static
	{
		int j = 0;
		for(int i = 0, size = SAVE_ARGUMENT.length() - 1; i < size; i++)
		{
			if(SAVE_ARGUMENT.charAt(i) == '%' && SAVE_ARGUMENT.charAt(i + 1) == 's')
				j++;
		}
		NEEDING_ARGUMENTS = j;
	}
	private static void write(String path, String... args)
	{
		write(new File(path), args);
	}
	private static void write(File file, String... args)
	{
		if(args.length != NEEDING_ARGUMENTS)
			throw new IllegalArgumentException("Unexceped count of arguments: " + NEEDING_ARGUMENTS + " excepted.");
		
		if(!file.exists())
		{
			try
			{
				file.createNewFile();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		
		BufferedWriter bos = null;
		try
		{
			bos = new BufferedWriter(new FileWriter(file));
			bos.write(String.format(SAVE_ARGUMENT, (Object[])args));
		}
		catch (Exception e)
		{
            e.printStackTrace();
        }
		finally
		{
			try
			{
				if(bos != null)
				{
					bos.flush();
					bos.close();
				}
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	private static Map<String, String> read(String path)
	{
		Map<String, String> map = new HashMap<String, String>();
        
		BufferedReader br = null;
		Pattern pattern = Pattern.compile("=");
		try
        {
			br = new BufferedReader(new FileReader(path));
			for(String line = null; (line = br.readLine()) != null;)
			{
				String[] split = pattern.split(line, 0);
				if(split.length != 2)
					throw new IOException("Illegal Line: " + line);
				
				map.put(split[0], split[1]);
            }
        }
		catch (IOException e)
		{
            e.printStackTrace();
        }
		finally
		{
			try
			{
				if(br != null)
					br.close();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		return(map);
	}
	public static void main(String[] args)
	{
		write("volvagia", "volvagia", "1A1DC91C907325C69271DDF0C944BC72", "21");
		Map<String, String> map = read("volvagia");
		
		for(Entry<String, String> entry:map.entrySet())
			System.out.println(entry.getKey() + " = " + entry.getValue());
	}
}
 

alex8686

Mitglied
:)

wollte eig die alte registrierung beibehalten und alles untereinander anlegen

nickname=alex
passwort=blablabla
alter=25
ort=Berlin

Er soll in die user.txt zb reinschreiben

Nickname=user.getnickname
passwort=get.PW
alter=get.alt
 

alex8686

Mitglied
hallo habe es soweit hinbekommen:

auszug aus user.txt <--registrierung


nickname=loldb
passwort=sagichnicht
alter=25
level=100
onlinezeit=0
color=000000
lastlogin=25.09.2011 06:36:02
picurl=http://pic.url.de
freunde=
email=db@testmail.de
homepage=http://dbpage.de
null=null
geschlecht=f
herkunft=Berlin
plz=Keine Angaben
tag=07
monat=12
jahr=1999
status=Schülerin/Schüler
motto=mottotestdb
ns=
autentifiziert=false

so nun zum problem, wie lese ich die zeilen zb hinter nickname= aus?
komme einfach nicht weiter... hier mal die sourcecodes:

Java:
    public void loadFromZip()
    {
        try
        {
            System.out.println("Registrierte Benutzer werden geladen");
            users.clear();
            File file = new File("db");
            String as[] = file.list();
            for(int i = 0; i < as.length; i++)
                try
                {
                    FileInputStream fileinputstream = new FileInputStream("db/" + as[i]);
                    DataInputStream datainputstream = new DataInputStream(fileinputstream);
                    String s = "";
                    for(String s1 = ""; (s1 = datainputstream.readLine()) != null;)
                        s = s + s1;

                    String as1[] = (String[])readNext(s);
                        users.put(as1[0].toLowerCase(), as1);
                    fileinputstream.close();
                }
                catch(Exception exception1) { }

            Registry _tmp = this;
            ChatServer.readuser = "0";
        }
        catch(Exception exception) { }
    }

und dann noch der rest...

Java:
    public Object readNext(String s)
    {
        String as[] = new String[22];
        int i = 0;
        for(; s.indexOf("\263") != -1; s = s.substring(s.indexOf("\263") + 1, s.length()))
        {
            if(i >= 22)
                break;
            as[i] = s.substring(0, s.indexOf("\263"));
            i++;
        }

Java:
                            s =("nickname=" + as[0]);
                            s1 =("passwort=" + as[1]);
                            s2 =("alter=" + as[2]);
                            s3 =("level=" + as[3]);
                            s4 =("onlinezeit=" + as[4]);
                            s5 =("color=" + as[5]);
                            s6 =("lastlogin=" + as[6]);
                            s7 =("picurl=" + as[7]);
                            s8 =("freunde=" + as[8]);
                            s9 =("email=" + as[9]);
                            s10 =("homepage=" + as[10]);
                            s11 =("null=" + as[11]);
                            s12 =("geschlecht=" + as[12]);
                            s13 =("herkunft=" + as[13]);
                            s14 =("plz=" + as[14]);
                            s15 =("tag=" + as[15]);
                            s16 =("monat=" + as[16]);
                            s17 =("jahr=" + as[17]);
                            s18 =("status=" + as[18]);
                            s19 =("motto=" + as[19]);
                            s20 =("ns=" + as[20]);
                            s21 =("autentifiziert=" + as[21]);
in diesem format schreibe ich in die user.txt, wie oben zu sehen der auszug. Nur das auslesen macht mir probleme..!!!

registrieren funktioniert jetz zwar, aber der login nicht... und Userprofile sind auch nicht erreichbar bitte gebt mir ein rat.
 
S

SlaterB

Gast
was ist denn neu sauber formuliert aktuell konkret die Frage?
alles nachzulesen ist ja ganz schon aufwendig,

und ein Gedanke zumindest vorweg:
wenn du dich mit bestimmten Grundsatzproblemen, wie das Wiederfinden einer bestimmten Information beschäftigt,
dann reichen auch möglichst einfache Testprogramma/-daten/-szenarien,
du kannst die meisten Probleme sicher genauso mit drei Zeilen
Java:
                            s =("nickname=" + as[0]);
                            s1 =("passwort=" + as[1]);
                            s2 =("alter=" + as[2]);
klären wie mit 1000 Zeilen
Java:
                            s =("nickname=" + as[0]);
                            s1 =("passwort=" + as[1]);
                            s2 =("alter=" + as[2]);
                            s3 =("level=" + as[3]);
                            s4 =("onlinezeit=" + as[4]);
                            s5 =("color=" + as[5]);
                            s6 =("lastlogin=" + as[6]);
                            s7 =("picurl=" + as[7]);
                            s8 =("freunde=" + as[8]);
                            s9 =("email=" + as[9]);
                            s10 =("homepage=" + as[10]);
                            s11 =("null=" + as[11]);
                            s12 =("geschlecht=" + as[12]);
                            s13 =("herkunft=" + as[13]);
                            s14 =("plz=" + as[14]);
                            s15 =("tag=" + as[15]);
                            s16 =("monat=" + as[16]);
                            s17 =("jahr=" + as[17]);
                            s18 =("status=" + as[18]);
                            s19 =("motto=" + as[19]);
                            s20 =("ns=" + as[20]);
                            s21 =("autentifiziert=" + as[21]);
mit dem Unterschied das die letztere Variante alles ewig komplizierter und unverständlicher macht,
schlimmstenfalls muss man auch noch viele Testdaten eintippen usw.
 

alex8686

Mitglied
die frage ist, wie lese ich die daten hinter = aus


also zb s.indexof("nickname="); und den ausgelesenen namen hinter dem = im arbeitsspeicher sichern oder auch direkt zugriff auf die datei. wobei ich den RAM speicher bevorzuge.

Mfg Alex:)
 

timbeau

Gesperrter Benutzer
String.split("=") würde 2 Teile liefern von denen du den 2. nehmen könntest.

Aber irgendwie finde ich das Konzept nicht durchdacht. Für sowas nimmt man eine Datenbank, es gibt da recht simple Sachen wie H2 und dann sowas wie Hibernate.
 
S

SlaterB

Gast
mit dem Index von s.indexof("nickname="); + Länge des gesuchten Strings, hier "nickname=", erhält man genau den Index hinter dem Gleichheitszeichen,
+-1, immer alles intensiv ausprobieren, testen wenn dahinter/ davor nix steht, Suchbegriff nicht gefunden wird usw. usf.

besonders wichtig ist in einem solchen Fall, nicht "nickname=" zweimal im Code stehen zu haben,
Variablen anlegen, evtl. Methode mit Parameter usw.
 

alex8686

Mitglied
mit dem Index von s.indexof("nickname="); + Länge des gesuchten Strings, hier "nickname=", erhält man genau den Index hinter dem Gleichheitszeichen,
+-1, immer alles intensiv ausprobieren, testen wenn dahinter/ davor nix steht, Suchbegriff nicht gefunden wird usw. usf.

besonders wichtig ist in einem solchen Fall, nicht "nickname=" zweimal im Code stehen zu haben,
Variablen anlegen, evtl. Methode mit Parameter usw.

klingt zwar alles schön und gut, aber wie es aussieht muss ich das komplette system umschreiben oder kann ich die variablen as[1],as[2] weiterverwenden??

mfg alex
 
S

SlaterB

Gast
selbst wenn ich den Code exakt kennen würde ist das eine übertrieben allgemeine Frage,
man muss immer vieles ändern..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
noah1407 Fileoutputstream Java Basics - Anfänger-Themen 4
S Datei-Speicherort von FileOutputStream Java Basics - Anfänger-Themen 4
M Fileoutputstream: Linux Dateinamen mit Umlaute Java Basics - Anfänger-Themen 4
J FileOutputStream aktuelle Speicher Pfad ausgeben Java Basics - Anfänger-Themen 13
J FileOutputStream Java Basics - Anfänger-Themen 3
J FileOutputStream write Java Basics - Anfänger-Themen 19
Corben Input/Output FileOutputStream - neue Zeile mit write(10) Java Basics - Anfänger-Themen 6
F FileOutputStream.write Java Basics - Anfänger-Themen 2
N FileOutputStream und existenz von Datei überprüfen Java Basics - Anfänger-Themen 2
O OOP FileOutputStream überschreibt ganzen inhalt der txt Java Basics - Anfänger-Themen 4
hdi Datentypen FileOutputStream#write(int) mit ints? Java Basics - Anfänger-Themen 5
J FileOutputStream richtige Pfadangabe? Java Basics - Anfänger-Themen 8
A FileOutputStream -> byte[] (ohne File) Java Basics - Anfänger-Themen 6
G FileOutputStream generieren Java Basics - Anfänger-Themen 2
M FileOutputStream und zu große Zahlen! Java Basics - Anfänger-Themen 10
C FileInputStream und FileOutputStream Java Basics - Anfänger-Themen 4
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
B Variablen Int Variabel in JTextField ändern Java Basics - Anfänger-Themen 2
W Methode ändern Java Basics - Anfänger-Themen 65
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
B Filepath "ändern"? Java Basics - Anfänger-Themen 5
t2im Java Array-Länge ändern? Java Basics - Anfänger-Themen 22
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
P Standard resources-Verzeichnis ändern Java Basics - Anfänger-Themen 9
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
J Itext-Paragraph Position ändern Java Basics - Anfänger-Themen 13
Z Attribut ändern ohne Kontrollstruktur Java Basics - Anfänger-Themen 2
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
V Umgebungsvariable Genutzte Javaversion in der Konsole ändern Java Basics - Anfänger-Themen 5
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
R Was muss ich an meinem Code ändern? Java Basics - Anfänger-Themen 2
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
W Eclipse Autoformatierung für Streams ändern ? Java Basics - Anfänger-Themen 1
M Programm per Nutzereingabe ändern Java Basics - Anfänger-Themen 3
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
L Java Date Format ändern Java Basics - Anfänger-Themen 5
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
F Schriftgröße ändern Java Basics - Anfänger-Themen 2
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
J Kapselung Array in Set ändern und in Main ausgeben lassen Java Basics - Anfänger-Themen 4
D scheduledAtFixedRate speed ändern Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
krgewb Icon von JButton ändern Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
Henri Erste Schritte Iteration ändern Java Basics - Anfänger-Themen 12
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Cursor ändern Java Basics - Anfänger-Themen 8
B Eclipse Tabellen Farbe ändern? Java Basics - Anfänger-Themen 2
I Ordnung JLayeredPane mit Button ändern Java Basics - Anfänger-Themen 5
S Array Eintrag ändern Java Basics - Anfänger-Themen 6
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
M im String Alphabet ändern Java Basics - Anfänger-Themen 3
L Threads Mit Threads JLabel ändern! Java Basics - Anfänger-Themen 2
Jinnai4 Werte in Textdatei ändern Java Basics - Anfänger-Themen 2
S Bestehendes Java Programm, einen festen Wert ändern Java Basics - Anfänger-Themen 17
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
T Parameter das übergeben wurde ändern? Java Basics - Anfänger-Themen 1
M Methoden Generische Klasse - ändern einzelner Attributwerte Java Basics - Anfänger-Themen 2
Hijo2006 Eclipse: Java Icon ändern Java Basics - Anfänger-Themen 9
S Schriftart/Farbe im Grafikfenster ändern Java Basics - Anfänger-Themen 8
G BenutzerDaten teilweise ändern in txt Datei Java Basics - Anfänger-Themen 10
J Button in anderer Klasse ändern Java Basics - Anfänger-Themen 3
E Hash map Value Wert hochzuholen/ändern Java Basics - Anfänger-Themen 7
H Innerhalb einer Methode eine Variable der aufrufenden Methode ändern? Java Basics - Anfänger-Themen 2
Voreck Jar Dateien Standart programm ändern Java Basics - Anfänger-Themen 12
R Vererbung Variable in einem übergeordneten Objekt ändern Java Basics - Anfänger-Themen 4
R JTextArea final Status ändern Java Basics - Anfänger-Themen 11
W Methoden Methode auf Array aufrufen, und dieses Array dabei ändern? Java Basics - Anfänger-Themen 10
A Variablen Variable soll ihren Wert nach Initialisierung nicht mehr ändern Java Basics - Anfänger-Themen 2
B Alle Attribute von Klasse bekommen und ändern Java Basics - Anfänger-Themen 12
J Klassen Klassenmethode um Variable zu ändern Java Basics - Anfänger-Themen 7
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
D Eigenschaften eines Objektes ändern Java Basics - Anfänger-Themen 1
D Opencsv-3.5 DEFAULT_DATE_FORMAT ändern Java Basics - Anfänger-Themen 8
M Erste Schritte Code zur Laufzeit ändern lassen Java Basics - Anfänger-Themen 3
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
I erstelle Vorschaubild mit der lib PDF-Renderer und möchte danach Dateiname ändern -> geht aber nicht Java Basics - Anfänger-Themen 0
G Bei Mouseover Grafik ändern, gutes Vorgehen gesucht Java Basics - Anfänger-Themen 0
U Tabelle ändern und die Inhalte speichern Java Basics - Anfänger-Themen 9
J Input/Output Zeile in Textdatei ändern Java Basics - Anfänger-Themen 14
Z JLabel Icon ändern Java Basics - Anfänger-Themen 2
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
N Variablen ändern wenn eine andere geändert wird Java Basics - Anfänger-Themen 7

Ähnliche Java Themen


Oben