Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [java] copiare diversi txt file

    Salve a tutti,
    ho un file che devo spezzare in diverse parti e poi rincomporlo in un unico file dove saranno aggiunte delle stringhe.
    Ho scritto questo codice, ma non funziona bene:
    Qualcuno mi può suggerire;

    codice:
    char[] buffer = new char[10000];
    							
    							BufferedWriter index = new BufferedWriter(new FileWriter(path+"index.htm", true));
    							BufferedReader part_1 = new BufferedReader(new FileReader(templatePath+"part_1.txt"));
    							BufferedReader part_2 = new BufferedReader(new FileReader(templatePath+"part_2.txt"));
    							part_1.read(buffer);
    							index.write(buffer);
    							String logoPath = (String)session.getAttribute("logoPath");
    							index.write(logoPath);
    							part_2.read(buffer);
    							index.flush();
    							index.close();
    							part_1.close();
    							part_2.close();

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il codice che hai scritto è molto confusionario: non sono riuscito a capire cosa tu voglia ottenere dalla suddivisione.
    Comunque, dato che hai utilizzato un BufferedReader, perchè non usi il relativo metodo readLine() al posto del read() ereditato da Reader?
    Se usi il metodo readLine() non hai bisogno di un array di caratteri predimensionato: ti basta creare un oggetto String.
    Poi per la scrittura, prova ad utilizzare un semplice PrintWeiter, che ti dà i metodi print() e println().

    Ti faccio degli esempi. Il primo legge un file, riga per riga:
    codice:
    BufferedReader br = new BufferedReader( new FileReader("mioFile.txt") );
    String linea = br.readLine();
    while( linea != null) {
       scriviSulFile(linea);
       linea = br.readLine();
    }
    Questo, invece, è il codice per scrivere su un file, utilizzando il PrintStream (ad esempio, può essere la procedura chiamata precedentemente scriviSulFile()):
    codice:
    PrintStream ps = new PrintStream( new FileOutputStream("fileOut.txt") );
    ...
    public void scriviSulFile(String linea) {
       ps.println(linea);   // Puoi usare anche ps.print(linea);
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    si, hai ragione. In fatti ho speso un po di tempo nel capire quale fosse la soluzione più adatta.
    Quello che voglio fare:
    Voglio che venga letta una pagina html che può essere anche un file di testo, ma che nei punti che dico io (nei collegamenti per intenderci) vada a scrivere delle stringhe precedentemente salvate.
    Leggere riga per riga è un pò dispendioso, parliamo di più di 100 righe.
    Ho invece pensato di leggere prima tutto il file e poi di riscriverlo in diverse parti tra cui verrano inserite le mie stringhe.

    E' un po brigoso capire esattamente su quale carattere interrompere la scrittura, ma sembra funzionare correttamente.
    codice:
    char[] buffer = new char[10000];
    							
    							BufferedWriter index = new BufferedWriter(new FileWriter(path+"index.htm", true));
    							BufferedReader sourceFile = new BufferedReader(new FileReader(templatePath+"index.htm"));
    							
    							sourceFile.read(buffer);
    							index.write(buffer, 1, 2160);
    							String logoPath = (String)session.getAttribute("logoPath");
    							index.write(logoPath);
    							index.write(buffer, 2161, 118);
    							String title = (String)session.getAttribute("title");
    							index.write(title);
    							index.write(buffer, 2279, 300);
    							
    							Iterator iter = elementList.iterator();
    							menuElement element = null;
    							
    							while(iter.hasNext()) {
    							  element = (menuElement)iter.next();
    							  
    							}
    							
    							index.flush();
    							index.close();
    							sourceFile.close();
    							session.removeAttribute("logoPath");
    							session.removeAttribute("title");

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.