Komprimieren/ Dekomprimieren

W

Wichtige Frage

Gast
Hallo liebe leute,
ich brauch wieder eure Hilfe!
Und zwar geht es diesesmal um folgendes Problem: Im Kurs haben wird mit dem Lehrer ein Programm gemacht mit dem man Datei'en komprimieren kann, Beispiel: man steht eine textdatei 'unkomprimiert.txt' ausserhalb von den Folders bin, src, usw. In dieser textdatei steht zB fffpppss dann soll das folgende programm eine neue textdatei erstellen die die erste textdatei 'unkomprimiert.txt' komprimiert hat, dh die neue textdatei enthällt dann folgendes: f3p3s2, wir haben als drei f's, drei p's und zwei s in der unkomprimierten textdatei.
das programm sieht so aus:

Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;


public class komprimiertSchreiben {
	public static void main(String[]args)
	{
	String dateiNameIn = "unkomprimiert.txt";
	String dateiNameOut = "komprimiert.txt";
	File meineDateiIn = new File(dateiNameIn);
	File meineDateiOut = new File(dateiNameOut);
	FileInputStream fis = null;
	FileOutputStream fos = null;
	try{
	fis = new FileInputStream(meineDateiIn);
	fos = new FileOutputStream(meineDateiOut);
	int fr=0;
	int act=fis.read();
	while(fr!=-1) //-1 = Dateiende
	{int zaehler =1; //Anzahl Wiederholungen
	while (act==(fr=fis.read())){zaehler++;}//bis verschieden	
	System.out.print((char)act);
	System.out.print(zaehler+" ");
	fos.write(act);
	fos.write(zaehler);
	act=fr;}
	} catch(Exception e){}
	try{fos.close();} catch (Exception e){}
	}}


Und meine Aufgabe ist es nun das umgekehrte zu machen: Eine komprimierte Datei umwandeln in eine dekomprimierte. Dh wir gehen nun eine Textdatei einlesen zB f3z2 dann soll das neue Programm eine neue textdatei erstellen die fffzz enthält! wie geht das? ich weiss überhaupt nicht wo anfangen!

Bin für jede Antwort dankbar! Muss die Aufgabe Freitag abgeben...
 
Zuletzt bearbeitet von einem Moderator:
M

Marcinek

Gast
Hallo

du liest die Datei ein und gehst sie zeichen für zeichen durch.

Wenn du eine Zahl findest, dann fügst du das zeichen davor 3 mal ein.

Schreibst das in eine neue Datei.

Gruß,

Martin
 
W

Wichtige Frage

Gast
ja diese idee hatte ich auch, aber ich weiss nicht wie ich sie umsetzen soll da meine java erfahrung quasi gleich null ist...es hört sich relativ einfach und kurz an, könntest du es kurz schreiben?
 
M

Marcinek

Gast
Hallo,

melde dich im Forum an und schreibe mir eine PM.

Gegen eine kleine Spende schreibe ich alles ;)


Gruß,

Martin
 

XHelp

Top Contributor
Wenn du jemanden willst, der es für dich macht, dann mach ein Thread in der Jobbörse auf und schreibt, was du dafür zahlst
 

ARadauer

Top Contributor
Wir machen eigentlich keine Hausaufgaben. Wir helfen gerne bei konkreten Fragestellungen.
Aber für eine fertige Lösung wirst du etwas bezahlen müssen...
 

ARadauer

Top Contributor
-_- muss man echt für 5 Zeilen zahlen? Es wird doch jemand hier sein der nur 10 Minuten seiner Freizeit opfern kann und es machen kann...

Viele Leute opfern gerne 10 Minuten ihrer Freizeit um jemanden bei konkreten Fragen zu helfen.
Aber einfach plump die fertige Lösung zu liefern, damit jemand seine Hausübung nicht machen muss, dafür sind wir nicht da...
 

Roberto007

Mitglied
Ich habe aber echt keine Ahnung wie ich dieses Programm schreiben soll? Der Sinn und Zweck von meiner Frage besteht darin dass ihr mir erklärt was ich in mein Programm schreiben muss und dass ich das Programm dann aber auch selber geschrieben habe. Euch das komplette Programm zu fragen war dumm von mir aber helft mir wenigstens wo ich anfangen soll und was ich schreiben soll...
 

XHelp

Top Contributor
In dem anderen Thread habe ich doch schon mögliche Lösungsansätze geschrieben: z.B. RegEx. Also wäre es angebracht dir anzuschauen wie du mit regulären Ausdrücken mit Java umgehst. Es gibt ja schon den einen oder anderen Beispiel im Internet.
 

ARadauer

Top Contributor
Der Sinn und Zweck von meiner Frage besteht darin dass ihr mir erklärt was ich in mein Programm schreiben muss und dass ich das Programm dann aber auch selber geschrieben habe.
Nein. Marcinek hat dir bereits gesagt was du machen musst, darauf du
es hört sich relativ einfach und kurz an, könntest du es kurz schreiben?

Du willst einfach die Lösung, die wirst du aber nicht bekommen.

1. Also versuch mal die Datei zeichneweise einzulesen.
2. Dann versuch zu erkennen ob das zeichen eine zahl war oder nicht
3. Merk dir immer auch das letzte zeichen
4. mach dir eine methode die ein zeichen x mal ausgiebt
5. wenn das zeichen eine zahl war rufst du diese methode mit dem letzen zeichen und der zahl auf

fertig.. versuch diese schritte mal, wenn du irgendwo ein problem hast, zb wie erkenne ich ob ein zeichen eine zahl ist, such in google, wenn du keine lösung findest, kannst du gerne fragen

aber: uhuu das ist schwer, ich kann das nicht, bitte die lösung blablabla das hören wir täglich und iteresiert uns nicht, das ganze ist eigentlich ganz einfach, mann muss es sich nur mal 10 minuten anschaun...
 

Roberto007

Mitglied
Sitze nun schon ne halbe Stunde dabei herauszufinden wie man die Datei zeichenweise einlesen kann, ohne erfolg, kannst du mir jetzt bitte helfen und sagen welchen Befehl man da benutzen muss?
Ich hab praktisch NULL Ahnung von Java.
 

ARadauer

Top Contributor
Java:
try {
			FileReader f = new FileReader(new File("d:/test.txt"));			
			int c;
			while ((c = f.read()) != -1){
				char zeichen = (char)c;
				System.out.println(zeichen);
			}
			f.close();
		} catch (IOException e) {
			System.out.println("Die Datei konnte nicht eingelesen werden.");
		}

Man findet nur 'Zeilenweise einlesen' sonst nix, und jetzt?
man könnte es auch zeilenweise einlesen und aus dem strings mit toCharArray() ein char array machen...
 

XHelp

Top Contributor
Man findet nur 'Zeilenweise einlesen' sonst nix, und jetzt?

Ich habe sogar schon extra gesagt das im 1. Link ein brauchbarer Code ist, und jetzt? Es ist schon ok, wenn du die ganze Aufgabestellung nicht selber bewältigen kannst, aber man wird doch wohl erwarten können, dass du eine einzige Seite mal selber durchließt, oder? :bahnhof:
 

Roberto007

Mitglied
Java:
try {
			FileReader f = new FileReader(new File("d:/test.txt"));			
			int c;
			while ((c = f.read()) != -1){
				char zeichen = (char)c;
				System.out.println(zeichen);
			}
			f.close();
		} catch (IOException e) {
			System.out.println("Die Datei konnte nicht eingelesen werden.");
		}


man könnte es auch zeilenweise einlesen und aus dem strings mit toCharArray() ein char array machen...

Wüsste ich nur wie man einen array erstellt...
 

Roberto007

Mitglied
Ich habe sogar schon extra gesagt das im 1. Link ein brauchbarer Code ist, und jetzt? Es ist schon ok, wenn du die ganze Aufgabestellung nicht selber bewältigen kannst, aber man wird doch wohl erwarten können, dass du eine einzige Seite mal selber durchließt, oder? :bahnhof:

Ich habe diesen GANZEN Thread durchgelesen und das mit dem Array gefunden, aber das hilft mir auch nicht weiter wenn ich nicht weiss wie man ein Array erstellt und wie man damit arbeiten kann?
 

ARadauer

Top Contributor
Wüsste ich nur wie man einen array erstellt...
...
aber das hilft mir auch nicht weiter wenn ich nicht weiss wie man ein Array erstellt und wie man damit arbeiten kann?

Ja sorry, aber was sollen wir dageben machen? Dir erklären was ein array ist? Nein, dazu braucht man kein Forum... "java insel" da findest du genug infos....

Dir die Hausübung schreiben.. nein machen wir nicht...


Sorry wenn du Hilfe zum Trainieren für einen Marathon in einem Lauf Forum suchst, werden die dir nicht erklären wie man sich die Schuhe zu bindet...
 
M

Marcinek

Gast
anstatt mir Vorwürfe zu machen könntest du auch so nett sein und mit sagen was ich schreiben muss um so ein CharArray zu erstellen.

Code:
char[] meinarray;

Ich denke du musst vorher ein wenig die Insel lesen.

;) Sonst haben wir hier einen 100 Seiten Thread und deine Frustration wird neue Grenzen erreichen.

Du hast es selbst gesagt, dass man für das Programm 10 Minuten braucht.

:joke:
 

Roberto007

Mitglied
Nein, es ist so, im Kurs haben wir mal das Thema Arrays durchgenommen aber das ist jetzt schon ein paar Monate her und in der zwischenzeit haben wir auch nichts mehr mit denen programmiert. Ich brauch nur einen kleinen refresh indem ihr mir die zeilen schreibt wie man dieses chararray erstellt und dann versteh ich wieder wie man mit denen arbeitet.
 

XHelp

Top Contributor
Java:
char[] deinarray = "hierstehtwas".toCharArray()
Und in wie fern bringt es dich weiter? Wenn die so viel Theorie fehlt, dann hol die erstmal nach. Du wirst doch wohl irgendwelche Notitzen im Unterricht gemacht haben, die du jetzt nachlesen kannst.
 

Roberto007

Mitglied
Java:
char[] deinarray = "hierstehtwas".toCharArray()
Und in wie fern bringt es dich weiter? Wenn die so viel Theorie fehlt, dann hol die erstmal nach. Du wirst doch wohl irgendwelche Notitzen im Unterricht gemacht haben, die du jetzt nachlesen kannst.

Wenn du wüsstest welchen Professor wir da haben dann könntest du auch keine Notizen aufschreiben^^ und um Theorie jetzt nachzuholen geht sehr sehr schlecht denn die Examenszeit hat angefangen und ich bin nur noch am lernen. Deshalb hab ich euch ja gefragt im besten Fall die ganze Aufgabe zu mache, so würdet ihr mich wirklich entlasten...
 

XHelp

Top Contributor
Wenn du wüsstest welchen Professor wir da haben dann könntest du auch keine Notizen aufschreiben
Habe noch von keinem Prof gehört, der vor der Vorlesung den Studenten die Arme abhackt oder alle Stifte klaut :bahnhof:
Deshalb hab ich euch ja gefragt im besten Fall die ganze Aufgabe zu mache, so würdet ihr mich wirklich entlasten...
Wie gesagt, du wirst schon jemanden in der Jobbörse finden. Aber wenn du willst, dass jemand deine Arbeit macht, dann solltest du für diese Arbeit auch bezahlen, wie es überall üblich ist.
 

muckelzwerg

Bekanntes Mitglied
Du hast zwei Möglichkeiten.
Entweder Du lernst erstmal Java und löst Dein Problem dann mit etwas Unterstützung oder allein.
Das ist der schnelle Weg.
Oder Du bröselst/jammerst/nervst solange im Internet rum, bis Du eine Lösung geschenkt bekommst/irgendwo zocken kannst.
Dann fliegst Du bei der nächsten Aufgabe noch härter auf die Fresse und es geht wieder los.
Wenn Du das dann weiter durchziehst und in anderen Bereich machst, fährst Du Deine Ausbildung (was auch immer Du da machst) an die Wand und die ganze Zeit war verschwendet. Ob Du dann anschließend nochmal Java lernst, spielt keine Rolle.
Das ist der langsame Weg.

Es geht bei solchen Aufgaben nicht um die Lösung, sondern darum, dass Du lernst die Lösung zu entwickeln. Wenn Du da noch ein paar Fehlerchen hättest, wäre das überhaupt kein Problem.
Aber die Aufgabenstellung hinschreiben und dann "öh, geht nicht" zu sagen ist 0% Leistung.
Es interessiert auf der ganzen Welt keinen Schwanz, welche Lösung Du für diese Aufgabe abgibst. Meinst Du Dein Lehrer schert sich auch nur eine Sekunde länger um Deine Noten, als er es muss?

Solange Du nicht von selbst auf die Idee kommst, dass es um den Weg geht und darum, sich Fähigkeiten anzueignen, kann Dir niemand bei irgendwas helfen.
Das ist hier als würdest Du Dich auf die Autobahn werfen und nach mehmaligem Überfahren sagen "kann mir jemand helfen, ich soll auf die andere Seite".
Als Antwort bekommst Du dann "da drüben kannst Du eine Brücke bauen, versuch es damit".
- "Ich kann aber nichts bauen, weiß gar nicht wo ich anfangen soll"
Setz halt mal ein paar Steine aufeinander und mach einen Sockel für die Brücke.
- "Ich sitz jetzt schon seit einer halben Stunde daran, es geht nicht. Kann mir jemand helfen? Wie benutzt man Steine?"
Mit "Stein[] Mauer = "Bauplan".toSteinMauer()"
...


Was denkst Du da eigentlich über unsere Arbeit? Einige hier verdienen ihr Geld mit Javaprogrammierung. Glaubst Du jemand der trotz Vorlesung und X Stunden Heimarbeit, die im Lehrplan fest drinstehen "Null Ahnung" hat, schüttelt einfach mal so ein Programm aus dem Ärmel, ohne Nachzudenken oder zu Lernen?
Du gehst doch auch nicht zum Schreiner und sagst "ey man, zeig mir doch nur wo die Säge angeht, den Schrank mach ich dann schon".


Wenn Du Java bisher schon gelernt hast, dann müsstest Du die Aufgabe und das Programm verstehen können. Dann müsstest Du in der Lage sein, passende Funktionen zu benennen und die allgemeine Struktur einer Lösung hinschreiben können.
Dann müsstest Du auch konkret an einem Punkt ansetzen und dort nach Hilfe fragen können.
Wenn Du das nicht kannst, dann hast Du nicht genug Java gelernt und musst das nachholen.

Das ist ein Problem von Soll und Haben.
"Ich sollte Java lernen, hab es aber nicht."
 
Zuletzt bearbeitet:

Roberto007

Mitglied
Habe noch von keinem Prof gehört, der vor der Vorlesung den Studenten die Arme abhackt oder alle Stifte klaut :bahnhof:

Wie gesagt, du wirst schon jemanden in der Jobbörse finden. Aber wenn du willst, dass jemand deine Arbeit macht, dann solltest du für diese Arbeit auch bezahlen, wie es überall üblich ist.

Ich soll also 15Euro bezahlen für 10beschissene Zeilen? Das ist echte Verarschung! Na dann such ich mir eben ein anderes Forum -.-
 

muckelzwerg

Bekanntes Mitglied
Du sollst gar nichts. Ist uns doch egal. Und das mein ich überhaupt nicht böse. Wir kennen Dich halt kein Stück.
Nimm die "Wucherpreise" doch als Argument, um es selbst zu schaffen. Dann kannst Du den Abzockern eine lange Nase machen, oder für weniger Geld das gleiche anbieten.
 

ARadauer

Top Contributor
Ich soll also 15Euro bezahlen für 10beschissene Zeilen? Das ist echte Verarschung! Na dann such ich mir eben ein anderes Forum -.-

Naja... du zahlst ja nicht € 15 für die 10 Zeilen sondern, dafür den Aufwand den jemand hatte sich das Wissen aufzubauen um die 10 Zeilen zu schreiben ;-)

Was ich als proffesioneller Software Entwickler mit einem Stundensatz von € 70 - € 100 soll dir faulen Sack die Hausübung schreiben? Das ist echte Verarschung! Na dann such ich mir eben andere Forum User die konkrete Fragen stellt und Tipps und Hilstestellungen gewissenhaft ließt und versuchen das Gelesene auch zu verstehen :toll:
 

Noctarius

Top Contributor
Hätte man nicht schöner sagen können :) Spontan fallen mir da auch nur wieder die 5 1/2 Stufen zum Erschleichen einer Lösung ein wenn ich das hier so lese.

"Theorie jetzt nachzuholen geht sehr sehr schlecht denn die Examenszeit hat angefangen und ich bin nur noch am lernen"

Dann hätte man eher anfangen sollen...
 

Neue Themen


Oben