Just nu i M3-nätverket
Jump to content

Vad är fel?


HalSoul

Recommended Posts

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]

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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)

 

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

'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...

 

Link to comment
Share on other sites

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)?

 

Link to comment
Share on other sites

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 =)

 

Link to comment
Share on other sites

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();
}
}

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...