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

    Riaprire un oggetto Reader

    salve a tutti.
    ho un problema con la lettura di un file.
    purtroppo mi vengono passa da una classe un oggetto File e un oggetto Reader. Quello che voglio fare è soltanto poter copiare il Reader nell'oggetto file e in caso di disconnessione(perchè lavoro in rete) di ritentare almeno 5. Quindi ho bisogno di chiudere e riaprire il Reader oppure di resettarlo.
    codice:
    Writer filewriter = null;
    boolean var = true;
    int lap = 0;
    do{
    if(lap>0){
    in.close();
    var=true;
    System.out.println(lap+")Riprovo tra 10s.");
    Thread.sleep(10000);
    }
    char buffer[] = new char[bufSize];
    int nChars;
    try{
    filewriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8"), bufSize);
    while ((nChars = in.read(buffer)) > 0) {
    filewriter.write(buffer, 0, nChars);
    }
    }catch(IOException e){
    var=false;
    lap++;
    }
    }while(var==false && lap<6);
    filewriter.flush();
    filewriter.close();
    System.out.println("Success.");
    avevo anche provato a resettarlo ma non funziona col mark(). Qualche altra soluzione

  2. #2
    dimenticavo!! questi sono i valori passati dalla classe al metodo

    codice:
    private static void textWrite(File f, Reader in) throws Exception {...

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da luapaul
    dimenticavo!! questi sono i valori passati dalla classe al metodo

    codice:
    private static void textWrite(File f, Reader in) throws Exception {...
    Dimenticavi anche che c'è un forum apposito per Java.


    Sposto.


    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

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Riaprire un oggetto Reader

    Originariamente inviato da luapaul
    Quello che voglio fare è soltanto poter copiare il Reader nell'oggetto file e in caso di disconnessione(perchè lavoro in rete) di ritentare almeno 5. Quindi ho bisogno di chiudere e riaprire il Reader oppure di resettarlo.
    Allora: "riaprirlo" in quel textWrite() no, non puoi e per diversi motivi.
    Innanzitutto le classi di I/O non hanno metodi per "riaprire". La "apertura" di un oggetto di I/O la fa concettualmente/tecnicamente il costruttore. Poi quel textWrite() sa solo di ricevere un Reader. Reader è una classe astratta e quindi bisognerebbe vedere quale è la classe "concreta" usata, che potrebbe anche essere un "wrapper" che incapsula altro (e magari altro ancora ecc...).

    Potresti saperlo tu a priori oppure no cosa è realmente.... comunque anche se lo sapessi non avresti in quel punto, presumo, i dati usati per ricostruire il XYZReader (anche cosa c'è eventualmente "sotto").

    Reader ha i metodi reset()/mark() ma una implementazione specifica potrebbe non supportare queste operazioni. Quindi torniamo al punto di prima col fatto che dovresti sapere bene a priori quale è esattamente e se supporta questi metodi.

    Dipende cosa c'è "sotto": se ad esempio fosse un InputStreamReader (estensione di Reader) che incapsula un InputStream di un socket, allora di certo tutta la catena non supporta il reset (non vedo come si possa materialmente tornare "indietro" su un socket!).

    In quel textWrite() l'unica cosa sensata e possibile che potresti fare è "bufferizzare" tutto il contenuto leggibile dal Reader e tenerlo o in memoria o su file. Ma in ogni caso stavolta tu sapresti cosa hai e come gestirlo e quindi potresti rileggerlo quante volte vuoi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.