Werken met bestanden

Status
Niet open voor verdere reacties.

stienoo

Gebruiker
Lid geworden
31 dec 2007
Berichten
315
Ik zou in java graag werken met een of meerdere bestanden. (ik zou vooral graag gegevens uit een bestand kunnen lezen maar liefst ook schrijven)
Weet iemand hoe dit moet?
 
Kijk maar eens op deze pagina. Begin gewoon bij de link "byte streams" ;)
 
Je moet ook even melden wat voor bestanden je wilt inlezen. XML / binairy / tekst / plaatjes.. Java heeft al veel ingebouwde mogelijkheden voor dit typen bestanden..
 
Ik zou het mogelijk willen maken om iets te saven dus text.
 
voor lezen van text bestanden zal ik zelf Scanner gebruiken.

voor het schrijven PrintWriter

Deze zijn het eenvoudigst ingebruik, en je kan eenvouding getallen lezen/schrijven. Zonder zelf getallen om te zetten naar strings..
 
Hartelijk dank, ik ben nu het volgende bekomen:

Code:
 public static void main(String[] args) throws IOException {
        BufferedReader inputStream = null;

        try {
            inputStream = 
                new BufferedReader(new FileReader("D:/xanadu.txt"));

            String l;
            while ((l = inputStream.readLine()) != null) {
            	Scanner s = new Scanner(l).useDelimiter(",\\s*");
                System.out.println(s.nextInt());
                System.out.println(s.nextInt());
                System.out.println(s.next());
                System.out.println(s.next());
                s.close(); 
            }
        } finally {
            if (inputStream != null) {
                inputStream.close();
            }
        }
    }

Maar is het normaal dat je dan altijd throws IOException moet toevoegen?
Om iets te schrijven ga ik nu wat proberen
 
het kan met scanner iets eenvoudinger

Code:
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner s = null;
        try {
            s = new Scanner(new File("D:/xanadu.txt"));
            s.useDelimiter(",\\s*");
            System.out.println(s.nextInt());
            System.out.println(s.nextInt());
            System.out.println(s.next());
            System.out.println(s.next());
        } catch (IOException e) {
            // file bestaat niet
            System.out.println(e.getMessage());
        } catch (NoSuchElementException e) {
            System.out.println("file klopt niet");
        } finally {
            if (s != null) {
                s.close();
            }
        }
    }
}

het beste kan je ioexception gelijk afvangen, dan kan je de gebruiker nog laten zien wat er fout ging. De NoSuchElementException krijg je als het nextInt() of next() is mislukt.
 
Ik geraak er niet uit hoe je kan schrijven, ik heb een 4D int (int[][][][]) en wil nu dat mijn bestand er als volgt gaat uitzien:
Code:
int[a][b][c][0], int[a][b][c][1], int[a][b][c][2], int[a][b][c][3], int[a][b][c][4]
En zo het aantal van int[a][c].length.
 
zo iets ?

Code:
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {

    final static int A = 2;
    final static int B = 3;
    final static int C = 4;
    final static int D = 2;
    
    public static void main(String[] args) {
        int[][][][] array = new int[A][B][C][D];
        
        System.out.println("Array =");
        for (int a = 0; a < A; a++) {
            for (int b = 0; b < B; b++) {
                for (int c = 0; c < C; c++) {
                    for (int d = 0; d < D; d++) {
                        int getal = d + c*10 + b*100+ a*1000;
                        System.out.print((d == 0 ? "" : ",") + getal);
                        array[a][b][c][d] = d + c*10 + b*100+ a*1000;
                    }
                    System.out.println();
                }
            }
        }
        
        try {
            PrintWriter writer = new PrintWriter(new File("C:\\test.txt"));
            
            for (int a = 0; a < array.length; a++) {
                for (int b = 0; b < array[a].length; b++) {
                    for (int c = 0; c < array[a][b].length; c++) {
                        for (int d = 0; d < array[a][b][c].length; d++) {
                            writer.print((d == 0 ? "" : ",") + array[a][b][c][d]);
                        }
                        writer.println();
                    }
                }
            }
            
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        System.out.println("File =");
        try {
            Scanner scanner = new Scanner(new File("C:\\test.txt"));
            while (scanner.hasNextLine()) {
                System.out.println(scanner.nextLine());
            }
            scanner.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 
Idd, ik ga morgen een keer kijken maar daar kan ik zeker iets van maken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan