Gå til innhold

Java skriving/lesing fra .txt filer


Anbefalte innlegg

Heisann, jeg har to små prosjekter jeg holder på med om dagen. Det ene er et enkelt "typewriter" program, det andre er et program hvor man skal kunne lage rollespill karakterer og deretter lagre karakter data til .txt fil og lese informasjon om karakteren senere.

 

Jeg har noen spørsmål om angående input til .txt filer. Finnes det mange forskjellige måter å skrive til filer på? Det virker så blandet på tutorials jeg finner på nettet, noen bruker Scanner, andre File, andre FileWriter, og det blir vanskelig å holde styr på hva som skal brukes hvor.

 

 

Lå oss si jeg lager en fil med

 

File tekstfil = new File("test.txt");

 

Hva kan jeg kan jeg gjøre for å få laget en metode, gjør at jeg kan skrive hva jeg vil til denne filen? Finnes det mange måter å gjøre det på?

 

Er enkel input/output et kloakk inferno i Java?

 

mushin :)

Lenke til kommentar
Videoannonse
Annonse

Jeg tror det kom et nytt API for å lese og skrive til filer i en av den senere versjonene av Java, men jeg har alltid pleid å bruke writer.

	
       private static void testwrite() throws IOException {
               File f = new File("test.txt");

	if (!f.exists()){
		f.createNewFile();
	}

	BufferedWriter bw = new BufferedWriter(new FileWriter(f));

	bw.write("fdafaf");
	bw.close();

}

 

Skal du skrive på bytenivå må du sikkert bruke FileOutputStream (og wrappe den i BufferedOutputStream) istedet.

Lenke til kommentar

Takker Kiff, skal teste det etterpå!

 

edit: Noen hint om hva man kan gjøre om man vil at det du skriver i bw.write("blabla"); kan være input fra bruker? Har lagt inn scanner objekt der som fungerer ellers i programmet men det gir kjøretidsfeil hvis jeg starter programmet.

Endret av mushin
Lenke til kommentar

[...] Scanner, andre File, andre FileWriter, [...]

Ikke bland epler, pærer, og appelsiner...

 

Scanner = for å lese fra f.eks. tastatur, eller en fil..

File = er kun filobjektet du kan lage deg, denne har ikke metoder for å skrive til f.eks. filer..

FileWriter = etter hva jeg kan skjønne brukes denne til å skrive til ihvertfall filer (har ikke brukt denne selv)

 

Hva kan jeg kan jeg gjøre for å få laget en metode, gjør at jeg kan skrive hva jeg vil til denne filen? Finnes det mange måter å gjøre det på?

Ja, heldigvis finnes det mange måter å løse et problem på i Java (stort sett), så hva er egentlig problemet?

 

Koden for å få til dette er ikke akkurat altfor komplisert (et 15-minutters halv-mekk eksempel):

import java.io.*;
import java.util.*;

public class filoperasjoner
{
public static void main(String args[]) throws FileNotFoundException
{
	Scanner InnData = new Scanner(System.in);

	System.out.print(" Dine valg: \n --------------------------------\n 1: skriving \n 2: lesing \n 0, 3, 4 ..: avbryt \n Valg: ");
	int valg = InnData.nextInt();

	if (valg != 1 && valg != 2)
		System.exit(0);

	System.out.print("Skriv filnavn (med f.eks. .txt): ");
	File Fil = new File(InnData.next());

	String tmp = InnData.nextLine();

	if (valg == 1)
	{
		System.out.print("Skriv inn tekst: ");
		Skrive(InnData.nextLine(), Fil);
	}

	else
		Lese(Fil);
}

public static void Skrive(String Tekst, File Fil) throws FileNotFoundException

{
	if (!Fil.exists())
	{
		PrintWriter UtData = new PrintWriter(Fil);

		UtData.println(Tekst);

		UtData.close();

		System.out.println("Tekst lagret.");
	}

	else
		System.out.println("Filen eksisterer allerede. Ingenting gjort.");
}

public static void Lese(File Fil) throws FileNotFoundException
{
	if (Fil.exists())
	{
		Scanner InnData = new Scanner(Fil);

		while (InnData.hasNext())
			System.out.println(InnData.nextLine());

		InnData.close();
	}
}
}

Endret av greygenic
Lenke til kommentar
	public static void skrivTilFil(File f, String s) {

	BufferedWriter bw = null;

	try{
		if (!f.exists()){
			f.createNewFile();
		}
		bw = new BufferedWriter(new FileWriter(f));
		bw.write(s);
	}catch (IOException e){
		// Feilhåndtering her
		e.printStackTrace();
	}finally{
		if (bw != null){
			try{
				bw.flush();
			}catch (IOException e){
				// ikke så mye vi kan gjøre her
			}
			try{
				bw.close();
			}catch (IOException e){
				// ikke så mye vi kan gjøre her
			}
		}
	}
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...