mushin Skrevet 4. oktober 2010 Del Skrevet 4. oktober 2010 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
Kiff Skrevet 6. oktober 2010 Del Skrevet 6. oktober 2010 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
mushin Skrevet 6. oktober 2010 Forfatter Del Skrevet 6. oktober 2010 (endret) 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 6. oktober 2010 av mushin Lenke til kommentar
greygenic Skrevet 7. oktober 2010 Del Skrevet 7. oktober 2010 (endret) [...] 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 7. oktober 2010 av greygenic Lenke til kommentar
Kiff Skrevet 8. oktober 2010 Del Skrevet 8. oktober 2010 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå