Just nu i M3-nätverket
Gå till innehåll

Vad är fel?


HalSoul

Rekommendera Poster

Det händer lixom inget helt enkelt.. eller ja, det sparas ingen text i filen...

Och om ni skulle finna andra problem så peka gärna ut dom =)

 

 

import java.io.*;

public class Keep {

private String filnamn;
private String in;
private BufferedReader las;
private BufferedWriter lagra;
private BufferedReader inmat;


public Keep (String f){
	filnamn = f;
	inmat 	= new BufferedReader(new InputStreamReader(System.in));
}

public void las(){
	try{
		las = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(filnamn))));
		System.out.print("Innehållet i filen '"+filnamn+"': ");
		in 	= las.readLine();

		while(in != null){
			System.out.println(in);
			in = las.readLine();
		}
	}
	catch(IOException e)
	{
		System.out.println("Filen är slut.");
	}
} 

public void skriv(){
	try{
		lagra 	= new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(filnamn))));
		System.out.print("Ange text: ");
		in 		= inmat.readLine();

		while(in != null){
			lagra.write(in+"\n");
			in = inmat.readLine();
		}
	}
	catch(IOException e)
	{
		System.out.println("Filen är slut.");
	}
}

public static void main(String args[]) throws IOException{
	Keep f = new Keep ("data.dat");
	f.las();
	f.skriv();
}
}

 

[inlägget ändrat 2005-12-24 20:27:00 av Josefsson]

[inlägget ändrat 2005-12-24 20:27:34 av Josefsson]

Länk till kommentar
Dela på andra webbplatser

Inte för att jag kan java särskilt väl (nära inte alls), men är det inte så att den klagar på att filhant inte är en variabeltyp? dvs att du inte specifierat nån variabeltyp innan.. (jag anar att det bara är ett sådant fel som man missar själv eftersom att man inte läser hela raden)

 

EDIT: Du verkar redan ha löst det.. men det hade inte ändrats på "stick-visningen" när man loggar in

[inlägget ändrat 2005-12-24 20:33:33 av Henrik30000]

Länk till kommentar
Dela på andra webbplatser

Jag hittade ett fel som jag gjort, men nu är det ett annat fel som består, just att verkligen skriva till fil, för det händer ingenting.

 

Länk till kommentar
Dela på andra webbplatser

mm, Jag har för mig att jag lyckades med det själv för nåt år sedan eller så, fast du hade jag råpluggat om det i en bok, och då glömmer man ju snabbt igen om man inte utnyttjar kunskapen, däremot kan jag säga att jag inte alls känner igen att man skulle behöva köra "= new Keep(?)" (ungefär hela min kunskap om java var från den tiden också, ifall jag missupfattat något)

 

Länk till kommentar
Dela på andra webbplatser

Det verkar lite rörigt med dina filer. Keep får ett filnamn in, men öppnar System.in, är det meningen? Är du säker på att System.in innehåller något?

 

Länk till kommentar
Dela på andra webbplatser

'inmat' är en inläsare (objekt) för att läsa in det som skriva från tangentbordet. Det är så jag har lärt mig i alla fall...

 

Länk till kommentar
Dela på andra webbplatser

Och du skriver in rader på tangentbordet som skriv() kan läsa och sedan skriva ut? Kommer inte ihåg hur det är med Java men ibland behövs det en flush för att det verkligen ska skrivas till filen/hårddisken. Du stänger inte heller filen, det är väl lämpligt i alla fall.

Vad är egentligen syftet med klassen Keep, vad är det den ska behålla (keep)?

 

Länk till kommentar
Dela på andra webbplatser

Kepp är bara ett namn, men det är väll mest för att jag tänkt mig göra ett program som sparar information, menandra ord keep information =)

 

Länk till kommentar
Dela på andra webbplatser

Nu är koden ändrad lite, men jag vet inte hur man lägger till en flush... Detta är förövrigt ett programexempel som min lärare har med i undervisningen. Kanske borde nämna det till honom att det inte funkar så bra =)

 

import java.io.*;

public class Keep {

private String filnamn;
private String in;
private BufferedReader las;
private BufferedWriter lagra;
private BufferedReader inmat;


public Keep(String f){
	filnamn = f;
	inmat 	= new BufferedReader(new InputStreamReader(System.in));
}

public void las(){
	try{
		las = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(filnamn))));
		System.out.print("Innehållet i filen '"+filnamn+"': ");
		in 	= las.readLine();

		while(in != null){
			System.out.println(in);
			in = las.readLine();
		}
		las.close();
	}
	catch(IOException e)
	{
		System.out.println("Filen är slut.");
	}
} 

public void skriv(){
	try{
		lagra 	= new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(filnamn))));
		System.out.print("Ange text: ");
		in 		= inmat.readLine();

		while(in != "\n"){
			lagra.write(in+"\n");
			in = inmat.readLine();
		}
		lagra.close();
	}
	catch(IOException e)
	{
		System.out.println("Filen är slut.");
	}
}

public static void main(String args[]) throws IOException{
	Keep f = new Keep("data.dat");
	f.las();
	f.skriv();
}
}

 

Länk till kommentar
Dela på andra webbplatser

Kepp är bara ett namn, men det är väll mest för att jag tänkt mig göra ett program som sparar information, menandra ord keep information =)

Ok, men man bör ju skilja på programmets funktion och klassens.

 

Jag kommer ihåg för lite Java för att se vad som är fel nu men ett sätt att felsöka är att samtidigt som du gör lagra.write även göra System.out.println på samma sträng och skriva ut när lagra.close anropas.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...