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

    suggerimento su RandomAccessFile

    codice:
    
    String str = "";  
    byte data[] = null;
    RandomAccessFile f = new RandomAccessFile(new File("U://test.txt"), "rw");
    f.setLength(0) ;
    
    for (...) {
             str = ...//recupera la stringa 
             f.setLength(0) ;     
             data  = str.getBytes();  
             f.getChannel().position(0);                  
             f.write(data);
                           
    }
                    
    f.close();


    ho un codice così scritto; recupera delle stringhe da delle code MQ e le scrive su file

    i requisiti sono
    1) ogni stringa del ciclo for sovrascrive nel file quella precedente
    2) se il processo cade (un system.exit per intenderci), sul file deve rimanere l'ultima stringa

    la domanda: non sono espertissimo di classi Java per la scrittura, è giusto utilizzare RandomAccessFile o mi consigliate qualcosa di diverso? In termini di performance principalmente

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da MyBloodyV. Visualizza il messaggio
    è giusto utilizzare [FONT=arial]RandomAccessFile o mi consigliate qualcosa di diverso?
    Se il file è di "testo puro" (e .txt lo fa intendere) in generale no, RandomAccessFile NON è affatto la scelta migliore. Poi bisogna vedere il caso preciso, ovviamente.

    Precisa meglio cosa vuoi fare. Ad esempio quando dici:

    Quote Originariamente inviata da MyBloodyV. Visualizza il messaggio
    1) ogni stringa del ciclo for sovrascrive nel file quella precedente
    Nel file quindi in ogni istante c'è sempre concettualmente una sola stringa? E le varie stringhe che ricevi sono della stessa lunghezza oppure no? Se no, cosa deve succedere?
    Fai magari qualche esempio concreto (se puoi/lecito per te).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    In ogni istante c'è sempre una sola stringa, sì

    No, le stringhe non sono della stessa lunghezza

    Grazie

  4. #4
    per capirci:
    recupera la prima stringa che è "prima stringa", la scrive sul file

    poi "seconda stringa", la scrive sul file (che ora quindi contiene solo questa seconda stringa)

    ecc ecc ecc

    se per caso c'è system.exit, non gestibile tramite eccezione, il file rimane con l'ultima stringa scritta

    grazie

  5. #5
    codice:
            String newStr="";        
            String filePath= "U://test.txt";
            FileInputStream fis = new FileInputStream(filePath);
            String content = IOUtils.toString(fis);
           
            FileOutputStream fos = new FileOutputStream(filePath);
            IOUtils.write(content, new FileOutputStream(filePath));
            
            for (...) {
                  newStr=...//recupera la stringa 
                 
                  content = content.replaceAll(content, newStr);
                  fos = new FileOutputStream(filePath);
                  IOUtils.write(content, new FileOutputStream(filePath));
            }
            
            fis.close();
            fos.close();

    meglio?
    Grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da MyBloodyV. Visualizza il messaggio
    meglio?
    No ... peggio, 3 volte più contorto di prima!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    ah ok, grazie, allora lascio il primo

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 © 2024 vBulletin Solutions, Inc. All rights reserved.