[JAVA] Text in stukjes hakken bij string.

Pagina: 1
Acties:

  • Skate2000
  • Registratie: November 1999
  • Laatst online: 29-12-2024
Hey allemaal, ik wil graag een groot (naja, wat is groot) textbestand (input.txt) in stukjes hakken, als het prog een bepaalde string tegenkomt (bijvoorbeeld "Einde sectie"). :)

Deze stukjes moet hij dan apart opslaan, onder de namen "output1.txt", "output2.txt", etc..

Nu bedacht ik zelf het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// java.io is nodig voor file lezen, java.net is nodig voor URL methodes.
import java.io.*;

public class splitfiles
{   // wat globale variabelen om het makkelijk te maken.
    String afbreekwoord = "EINDE";
    String filename = "input.txt";
    int bestandnummer = 0;
    
    // Constructor van de class. Wordt eerst file ingelezen, hiervan moeten dan kleinere bestandjes worden gemaakt
    private splitfiles()
    {   String value = readFromFile();
    }
    
    private String readFromFile()
    {   // initialisatie van wat variabelen
        String regel, output = "";
        BufferedReader invoer;
        
        try
        {   // File inlezen en inhoud per regel in 'output' zetten.
            invoer = new BufferedReader(new FileReader(filename));
            regel = invoer.readLine();
            while(regel != null)
            {   while (regel != (afbreekwoord))
                {
                output += regel;
                regel = invoer.readLine();
                }
                maakBestandje();
            }
            invoer.close();
        }
        catch(Exception e)
        {   die("Onbekende fout tijdens lezen bestand..");
        }
        
        return output;
    }
    
    public void maakBestandje()
    {   bestandnummer ++;
        try
        {   BufferedWriter bufferedwriter = new BufferedWriter(new FileWriter());
            String line;
            while ((line = bufferedreader.readLine()) != null)
            {   bufferedwriter.write(line);
                bufferedwriter.newLine();
            }
        }
        catch (IOException e)
        {   die("Er ging even wat mis...");
        }

    }


    
    
    // Foutmeldingen op het scherm
    private void die(String s)
    {   System.out.println("Error: " + s);
        System.exit(0);     
    }

    // De methode die wordt aangeroepen als je 'm van commandprompt start.      
    public static void main(String params[])
    {   System.out.println("Split bestandjes in stukjes...");
        splitfiles thisObj = new splitfiles();
    }
}

Maar hij werkt niet:
C:\gpssend\splitfiles.java:44: No constructor matching FileWriter() found in class java.io.FileWriter.
{BufferedWriter bufferedwriter = new BufferedWriter(new FileWriter());
^
C:\gpssend\splitfiles.java:46: Undefined variable or class name: bufferedreader
while ((line = bufferedreader.readLine()) != null)
^
2 errors
Heeft iemand een id van wat ik fout doe? En wat ik moet doen, om ervoor te zorgen dat mijn prog doet wat hij MOET doen?
Zou mooi zijn :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:30
Zijn dat syntaxfouten?

Een goede programmeur moet toch in staat zijn om zelf zijn syntax-fouten op te lossen. De compiler helpt je toch al wat op weg?

https://fgheysels.github.io/


  • DaRKie
  • Registratie: December 2001
  • Laatst online: 20-08 15:40
de eerste, constructor zonder parameters bestaat

die 2de fout
als je nu is ff zelf goed kijkt en nadenkt en is die foutmelding lees?
dan zie je toch dat je een var gebruikt die niet bestaat??


al bij al niet zo een moelijke foute,niet?
gewoon ff de foutmelding lezen en je weet het :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Constructor Summary FileWriter(File file)
Constructs a FileWriter object given a File object. FileWriter(File file, boolean append)
Constructs a FileWriter object given a File object. FileWriter(FileDescriptor fd)
Constructs a FileWriter object associated with a file descriptor. FileWriter(String fileName)
Constructs a FileWriter object given a file name. FileWriter(String fileName, boolean append)
Constructs a FileWriter object given a file name with a boolean indicating whether or not to append the data written.

Ik zie geen constructor staan zonder argumenten. Zie verder whoami

ps: dit zijn geen syntax fouten, maar semantische fouten ;)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Iig fouten die je heeeeeel goed zelf kan oplossen door in de API ( http://java.sun.com/j2se/1.4/docs/api/index.html ) te koekeloeren en te kijken naar wat de compiler je vertelt.

BTW Je kan gebruik maken van een StringTokenizer als je een grote string in stukken wil hakken

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik zie trouwens dat je string-optelling (op de output variabele) gebruikt om een resultaat op te bouwen. Dat is extreem ongelukkig.

String-optelling functioneert aardig als je 2 of 3 kleine stringetjes op wilt tellen maar als je een onbekend aantal Strings zo gaat optellen in een loop krijg je grote problemen: Strings zijn namelijk immutable. Elke keer dat je een String optelt bij het bestaande resultaat zal het nieuwe resultaat een volledig nieuw opgebouwd moeten worden. Dat betekent dat je als je "." optelt bij een String van 5000 tekens, er een hele nieuwe String van 5001 tekens moet worden gemaakt en de oude String garbage is.

Je kunt de extreme gevolgen van deze aanpak nagaan in deze klassieker:

[topic=105022/1/25]

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1