Oggetto BufferedWriter che non viene visto

di il
2 risposte

Oggetto BufferedWriter che non viene visto

Ciao a tutti,
qualcuno di voi mi sa spiegare perché nel seguente programma l'oggetto bw che è di tipo BufferedWriter non viene visto?
In pratica vorrei riuscire a creare un file di testo Libreria.txt che contenga l'elenco di tutti i file che si trovano a partire da un determinato percorso, ma non ci riesco. Dove sbaglio?
package com.fulviotarable;

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class CaricaLibreria {

    public static String[] libreria;
    public static int conta = 0;

    public static void main(String[] args) throws FileNotFoundException {
        libreria = new String[200000];
        File fl = new File("F:\\My eBooks\\E - BOOK\\e-book\\");
        File fs = new File("C:\\Users\\Fulvio\\Documents\\Sviluppo-Procedure\\Java\\Progetti\\Bibliotecario\\Libreria.txt");
        try {
            FileWriter fw = new FileWriter(fs);
            BufferedWriter bw = new BufferedWriter(fw);
        } catch (IOException ex) {
            Logger.getLogger(CaricaLibreria.class.getName()).log(Level.SEVERE, null, ex);
        }
        elencaFile(fl);
//        System.out.println("Trovati " + conta + " files");
    }

    public static void elencaFile(File dir) {
        File[] entries = dir.listFiles();

        if (entries != null) {
            for (File entrie : entries) {
                if (entrie.isDirectory()) {
                    elencaFile(entrie); // ricorsione
                } else {
                    bw.write(entrie.toString(), 0, entrie.length());
                    libreria[conta] = entrie.toString();
//          System.out.println(conta + "\t" + (entrie) + "\t" + libreria[conta]); // stampa solo il nome del file
                    conta++;
                }
            }
        }
    }
}

2 Risposte

  • Re: Oggetto BufferedWriter che non viene visto

    La tua variabile bw è dichiarata all'interno del blocco try, quindi non è visibile all'esterno.
    Tu la usi addirittura in un altro metodo, quindi se non la memorizzi come variabile o se non la passi come parametro all'altro metodo non ne esci.

    Per me sarebbero comunque due soluzioni piuttosto brutte, e in generale non mi piace molto il design che stai adottando.
    Io memorizzerei i file in una lista, es. ArrayList, che tieni come variabile di istanza (comincia a togliere un po' di variabili statiche), e in elencaFile andrei solo ad aggiungere man mano i file alla lista (se usi una lista eviti di dover usare quella variabile conta e in generale hai più flessibilità).

    Quando la ricerca ha terminato crei il tuo file all'interno di un blocco try catch, ma istanzi e usi il tuo BufferedWriter in un unico posto.
  • Re: Oggetto BufferedWriter che non viene visto

    Ciao @Ansharja e grazie mille per il prezioso consiglio.
    Non riesco ancora ad utilizzare la classe ArrayList, ma un semplice array funziona lo stesso.

    Ciao e Ancora Grazie 1000
    Fulvio
Devi accedere o registrarti per scrivere nel forum
2 risposte