Ich habe eine Datei, in der in jeder Zeile Infos stehen (was soll auch sonst da sein =? )
Nun möchte ich, dass mein Programm eine bestimmte Zeile ändert, d.h. einfach eine Zahl ersetzt (z.B. aus einer 1 eine 2 machen).
Ich denke, dass es mit einem Filechannel gehen könnte, ich habe aber nur einen OutputSteam bzw. einen InputStream. Kann man dein Outputstream in einen Fileinputstream konvertieren? Denn dann könnte ich daraus ein FileChannel erzeugen.
Ich möchte nicht zwischenspeichern sondern alles direkt im Programm haben. Leider wird es auch schwierig eine z.B. 100K Zeilen lange Dati in den Arbeitsspeicher zu laden...
Ist das iwie möglich oder wie kann ich es sonst machen? Kann ich direkt mir dem OutputSteam an eine bestimmte Stelle in der txt gehen und dort dann einfügen?
Ich weiß die Zeile nicht genau, aber ich weiß, was in der Zeile steht. Das müsste ich dann irgenwie suchen können, ist denk ich aber kein Problem..... oder!?!
das suchen sollte hoffentlich kein problem sein.
Komplette datei auslesen (jede zeile) nach deinem Kriterium suchen, in dem Array (oder List, oder was du gerne haben magst) ersetzen, und dann wieder das komplette array in die datei schreiben!
einen einzelnen Wert ersetzen geht innerhalb der datei glaub ich nicht!
zur 2.Lösung: Das Problem ist, dass diese Dati möglicherweise mehrmals gleichzeitig genutzt wird, und damit wird dann leider etwas überschrieben etc... Das geht meines Wissens so leider nicht ;'(
Ich hätte mich ja nicht direkt ins Forum begeben, wenn ich nicht schon vorher VIEL überlegt habe...
Ersetzen ist keine Problem (RandomAccessFile).
Einfügen an einer bestimmten Stelle schon eher. Dafür musst du alles was nach der Stelle kommt einlesen, deine Daten an die Stelle schreiben, und alles was du eingelesen hast dahinter schreiben.
Ersetzen ist keine Problem (RandomAccessFile).
Einfügen an einer bestimmten Stelle schon eher. Dafür musst du alles was nach der Stelle kommt einlesen, deine Daten an die Stelle schreiben, und alles was du eingelesen hast dahinter schreiben.
Wie gesagt, leider können mehrere User gleichzeitig auf die Dati zugreifen und sie gleichzeitg bearbeiten, womit dann Teisstellen überschrieben werden...
Und außerdem hab ich nur einen Iput-/OutputStream...
mfg
BH16
PS: Tut mir leid, dass es so ein schweres Problem ist...
jeder hat eine eigene Zeile, die er verändern kann, keine andere Zeile wird angerührt, also ich denk mal, das dürfte gehen. Aber dafür brauch ich halt die bestimmte Stelle, damit wirklig NUR sein Zeug überschrieben wird
Ich hab für alles ein Gegenargument : Die einzelnen User sollen gegenseitig LESErechte haben, und da geht es am schnelsten, wenn es nur eine Datei ist...
wenn du readLine in eine schleife packst, und bei jedem Durchlauf den String den du erhältst auf den Wert überprüfst den du brauchst, du weißt ja was du suchst, du weißt ja nur nicht wo
wenn du readLine in eine schleife packst, und bei jedem Durchlauf den String den du erhältst auf den Wert überprüfst den du brauchst, du weißt ja was du suchst, du weißt ja nur nicht wo
1. man kann die Zeile auch mitzählen in der Schleife, und dann wüsste ich, welche Zeile es ist. Die charzahl bekomme ich auch raus, wenn ich die Strings auf Länge prüfe und addiere. Darüber hab ich mir schon den Kopf zerbrochen.
2. Es geht aber darum, wie ich an die bestimmte Stelle schreiben kann...
Verschiedene User die gleichzeit schreiben/lesen können, einfügen von Zeilen, bearbeiten von Zeilen.
Warum verwendest du keine Datenbank? Oder musst du dich da mit nem einzelnen File rumschlagen?
Ersetzen ist keine Problem (RandomAccessFile).
Einfügen an einer bestimmten Stelle schon eher. Dafür musst du alles was nach der Stelle kommt einlesen, deine Daten an die Stelle schreiben, und alles was du eingelesen hast dahinter schreiben.
Verschiedene User die gleichzeit schreiben/lesen können, einfügen von Zeilen, bearbeiten von Zeilen.
Warum verwendest du keine Datenbank? Oder musst du dich da mit nem einzelnen File rumschlagen?
Eine Datenbank wäre schön, es ist aber so, dass ich auf die in diesem Fall nicht extern zugreifen kann... Und ich möchte es lieber erstmal mit Java machen (bin 15; 1. Programmiersprache; lerne seit ca. 3 Monaten) und nicht noch PHP lernen, mit dem das dann iwie gehen soll...
Ersetzen ist keine Problem (RandomAccessFile).
Einfügen an einer bestimmten Stelle schon eher. Dafür musst du alles was nach der Stelle kommt einlesen, deine Daten an die Stelle schreiben, und alles was du eingelesen hast dahinter schreiben.
Einem RandomAccessFile übergibst du einfach den Dateinamen. Alle bestehenden Streams zu den Files sollten dann auch geschlossen sein, also falls irgendwo noch In-/Outputstreams offen sind kanns da auch krachen.
Einem RandomAccessFile übergibst du einfach den Dateinamen. Alle bestehenden Streams zu den Files sollten dann auch geschlossen sein, also falls irgendwo noch In-/Outputstreams offen sind kanns da auch krachen.
void close()
Closes this output stream and releases any system resources associated with this stream.
void flush()
Flushes this output stream and forces any buffered output bytes to be written out.
void write(byte[] b)
Writes b.length bytes from the specified byte array to this output stream.
void write(byte[] b, int off, int len)
Writes len bytes from the specified byte array starting at offset off to this output stream.
abstract void write(int b)
Writes the specified byte to this output stream.
mal ne andere frage : WOHER bekommst du denn die beiden streams ? *resp: wie werden diese mit dem entsprechende file verbunden ... und WO liegt das file ?*
hab nen FTP-Server
dort kann man auch ne datenbank machen, aber wie gesagt, man kann halt nur intern drauf zugreifen, nicht extern (habs auch schon geprobt...)
mal ne andere frage : WOHER bekommst du denn die beiden streams ? *resp: wie werden diese mit dem entsprechende file verbunden ... und WO liegt das file ?*
das is doch nich dein ernst oder ?
du verfolgst nich wirklich immer noch den ansatz in deine app die zugangsdaten für deinen FTP mit auszuliefern ... vor allem dann noch MIT SCHREIBRECHTEN !
ganz erlich : gib mir mal deine software ... innerhalb von 5 min mach ich dir aus deinem FTP-acc n warez-portal ...
aber wenn du auf die sicherheitshinweise *aus den anderen threads* nicht hören willst und erstmal aus deinen fehlern lernen musst ... bitte ...
aber genug OT
wenn du via FTP mit dieser datei arbeitest hast du genau EINE möglichkeit
datei komplett vom server laden -> editieren -> wieder komplett neu hochladen
dabei das problem : du kannst das file wärend dieser aktion nicht sperren ... wirst also nie zu dem erfolg kommen den du willst und das file dürfte nach ein paar 100 nutzungen komplett zerstückelt sein ...
registrier dich. ich achreib dir ne PM.
wenn dus wirklig schaffst, danm alle achtung,.denn: ich hab eine jar in eine exe konvertiert. und die kriegste nicht so leicht entschlüsselt!
HAHA
und nu hilf mir mal wierklig und zerstör nicht immer nur meine threads. ich hab nämlich darüber nachgedacht!
Also egal ob EXE oder nicht, er hat Recht. Das entschlüsseln ist kein Problem.
Abgesehen davon steht in dem letzten Post von ihm ein Hinweis, den du aber scheinbar überlesen hast.
PS: Deine "Misbrauchsmeldung" lass ich mal außen vor, denn mit Dingen wie IP-Sperre scheinst du dich nicht wirklich auszukennen, oder kennst du den Begriff dynamische IP? - Naja egal.
Am Besten du regst dich erstmal wieder ab, dann ist deine Rechtschreibung nämlich um Längen besser.
Wenn ich das aber ändern kann, kann ein konkurrierender Prozess das auch, immerhin ist der FTP User der Selbe. Alternativ mehrere FTP User hinterlegen (*hust*) oder am Besten gleich den Userlogin der Software als Zugangsdaten für FTP nehmen. Dann braucht man die auch nicht in der EXE hinterlegen
Aber dieses ganze krude System sollten wir jetzt aufhören zu diskutieren, sonst glaubt der TO nachher noch er hätte da einen genialen Ansatz gefunden.... ALSO PFUI!
dann werden soweit ich weiss, die zugangsdaten nicht verschluesselt gesendet, sprich man muss bloß den Netzwerkdatenverkehr beobachten und schon hat man die Daten. Sobald dein Programm eine Verbindung zum FTP-Server aufbaut, liefert es die Zugansdaten auf dem Silbertablett, da kommt reverse engineering nicht mal zum Einsatz...
Ich denke auch ist gut jetzt, wie schon geschrieben: Entweder sollte er es verstanden haben, dass die Idee s******e ist oder er soll sie umsetzen, dann aber ohne Hilfe von hier, sonst heißt es hinterher wieso ihm keiner klar gemacht hätte, dass die Idee s******e ist.
Sollte der TO noch äußern wollen, kann er mir gerne PN schreiben: Solange mach ich hier mal zu.