Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    202

    [JAVA] Creazione File e r/w

    Non sò se sbaglio qualcosa, perchè non mi scrive sul file:

    nel corpo della classe MyFile scrivo questo:

    codice:
    File file; public FileWrapper(){ file= new File("Esame.txt"); if (!file.exists()){ try{ file.createNewFile(); } catch (IOException e){ System.err.println("Errore sulla creazione del file: "+e.getMessage());}} }
    successivamente implemento un metodo per la scrittura di una stringa pervenuta tramite "diciamo" il main:

    codice:
    public String WriteOnFile(String in) throws IOException{ String esito; byte date[]= in.getBytes(); OutputStream out=null; boolean ok=false; out= new BufferedOutputStream(new FileOutputStream(this.file)); ok=true; out.write(date,0,date.length); out.close(); if (ok){ esito="Positivo";} else {esito="Negativo";} return esito; }
    Ora il problema è che la scrittura non avviene assolutamente. Ho qualche errore in questo codice? chiedo prima partendo da questo, per poi eventualmente postare anche la classe che utilizza i metodi di questa!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    dopo la write, prima della close, metti una flush

    codice:
    out.flush();
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    202
    non và, dovrebbe funzionare eppure nada.

    questo è il run() del thread worker che nel costruttore riceve dal mainServer la socket di connessione e il filewrapper, istanziato nel mainServer usando
    FileWrapper file=new FileWrapper("Esame.txt");

    il thread riceve dal client una stringa concatenata, dove viene indicato se vuole "r" o "w", riga dove andare ad effettuare l'operazione e eventualmente stringa da scrivere.

    codice:
    DataOutputStream ToClient= new DataOutputStream(connection.getOutputStream()); BufferedReader inFromClient= new BufferedReader(new InputStreamReader(connection.getInputStream())); String toConvert= inFromClient.readLine(); String[] tokens= toConvert.split(" "); operazione= tokens[0]; riga= Integer.parseInt(tokens[1]); if (operazione=="w"){ scrivi= tokens[2]; result=fw.WriteOnFile(scrivi); } else { result= fw.ReadToFile(); } ToClient.writeBytes(result +'\n'); inFromClient.close(); ToClient.close();
    restituisce poi al client, una stringa con scritto, positivo o negativo per sapere l'esito della scrittura.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    abbi pazienza, metti il codice nel tag code scrivendolo a mano, così non si legge
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    202
    Faccio così che vado prima, scusa ma pensavo uscisse in colonna

    creo i 2 flussi di In e OUT per scrivere e leggere nella combinazione client/server.

    Uso :

    codice:
    String toConvert= inFromClient.readLine(); 
    String[] tokens= toConvert.split(" ");
    operazione= tokens[0];
    riga= tokens[1];
    
    if (operazione=="w") {
     scrivi=tokens[2];
    result= file.WriteOnFile(scrivi);
    } else {
    result= file.ReadOnFile();}
    
    toClient.writeBytes(result + '\n');
    inFromClient.close();
    toClient.close();

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    scrivi [ code ] il tuo codice e [ /code ]

    senza spazi tra le parentesi e la parola code
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    202
    mi era partito l'invio mentre provavo una cosa...ho modificato

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ma le API di quello che vuoi usare le guardi??
    le stringhe si confrontano con equals

    codice:
    if ("w".equals(operazione)) {
     scrivi=tokens[2];
    result= file.WriteOnFile(scrivi);
    } else {
    result= file.ReadOnFile();}
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    202
    uh cavolacci, ecco dove stava l'errore, si lo sò che le string si comparano con equals...è che all'inizio facevo una comparazione tra interi lì -.-

    2 ore per una cosa così banale...!!!

    scusa visto che c siamo, stò facendo quest'esercizio client/server, una volta chiuso il server il file non deve essere ricreato, ma eventualmente deve solamente riutilizzare quello precedentemente creato va bene solo questo?

    file= new File("Esame.txt");

    if (!file.exists()){
    try{
    file.createNewFile();}

    Inoltre se alla scrittura successiva voglio far scrivere alla riga successiva libera o ad una riga decisa dall'utente, sapresti indicarmi qualche guida che lo spiega o codice che lo mostra???

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    personalmente non mi perderei dietro seek e ricerca a meno di non essere costretta e se guardi le API di FileOutputStream
    noti che puoi aprire lo stream in append, penso faccia al caso tuo
    RTFM Read That F*** Manual!!!

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.