Scrivere in un file di caretteri

di il
10 risposte

Scrivere in un file di caretteri

Salve a tutti .
Devo creare un metodo che dato il nome del file e un intero n scrive in un file di caratteri con quel nome, n interi casuali , uno per riga.
Questo è il mio codice ma non funziona dato che il file di testo rimane sistematicamente vuoto...Potreste aiutarmi cortesemente?

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package esercizio3;
import java.io.*;
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import java.util.Random;
import java.util.Scanner;

public class Esempio {

  
        
     public static void scriviIntero(String nomeFile, int n, int m) {
        try (PrintWriter scrivi = new PrintWriter(new FileWriter(nomeFile), true)) {
            for (int i = 0; i < n; i++) {
                int nuovo =(int) Math.random() ;
                scrivi.println(nuovo);
            }
        } catch (IOException e) {
            System.out.println("Errore di I/O nella funzione scriviIntero nel tentativo di scrivere sul file " + nomeFile);
        }
    }

    
    
    
    public static void main(String[] args) {
   
        scriviIntero("C:\\Users\\Walter\\Desktop\\dati.txt",50,100);
    }
    
}



10 Risposte

  • Re: Scrivere in un file di caretteri

    Walter995 ha scritto:


    Questo è il mio codice ma non funziona dato che il file di testo rimane sistematicamente vuoto...Potreste aiutarmi cortesemente?
    Il file non resta "vuoto", gli n dati ci sono ma ... sono tutti 0. Perché hai fatto direttamente il cast a int del valore del random(), quello è il problema.
    random() dà un valore tra 0 (incluso) e 1 (escluso), in pratica è sempre 0,xxxxx e il cast a int tronca i decimali, risultato sempre 0.


    P.S. Non hai usato il parametro m
  • Re: Scrivere in un file di caretteri

    Ho ascoltato i tuoi suggerimenti ed ho cambiato il codice ma ancora non funziona come dovrebbe ...Dov'è l'errore?
    
    package esempio;
    import java.io.*;
    import java.util.InputMismatchException;
    import java.util.NoSuchElementException;
    import java.util.Random;
    import java.util.Scanner;
    
    
    public class Esempio {
    
      
            
         public static void scriviIntero(String nomeFile, int n) {
            try (PrintWriter scrivi = new PrintWriter(new FileWriter(nomeFile), true)) {
            Random random = new Random();
                for (int i = 0; i < n; i++) {
                    int nuovo = random.nextInt();
                    scrivi.println(nuovo);
                }
            } catch (IOException e) {
                System.out.println("Errore di I/O nella funzione scriviIntero nel tentativo di scrivere sul file " + nomeFile);
            }
        }
    
        
        
        
        public static void main(String[] args) {
       
            scriviIntero("C:\\Users\\Walter\\Desktop\\dati.txt",50);
        }
    }
        
    
  • Re: Scrivere in un file di caretteri

    Walter995 ha scritto:


    ho cambiato il codice ma ancora non funziona come dovrebbe ...Dov'è l'errore?
    Nessun errore, il codice ora "funziona" nel senso che hai 50 int casuali su tutto il range del int.
  • Re: Scrivere in un file di caretteri

    Sì avrei 50 interi , uno per ogni riga , di valore casuale . Continuo a non capire però perchè il file che gli passo rimane vuoto...
  • Re: Scrivere in un file di caretteri

    Walter995 ha scritto:


    Continuo a non capire però perchè il file che gli passo rimane vuoto...
    Come stai compilando/avviando? javac/java? (quale JDK?) Un IDE?
    E in che modo "apri" il txt per vederne il contenuto?
  • Re: Scrivere in un file di caretteri

    Apache NetBeans IDE 11.0
    Java: 12.0.2;
    Per aprire il txt faccio semplicemente un doppio click..
  • Re: Scrivere in un file di caretteri

    Walter995 ha scritto:


    Apache NetBeans IDE 11.0
    Java: 12.0.2;
    Per aprire il txt faccio semplicemente un doppio click..
    Ok ma nulla di strano comunque.
    Il file l'hai fatto scrivere sul "desktop". Bene, verifica la dimensione dalle proprietà, con 50 interi casuali il file dovrebbe essere intorno ai 600 byte ... quindi non "vuoto".
  • Re: Scrivere in un file di caretteri

    Ho controllato la dimensione ma dice 0 byte. Com'è possibile?
  • Re: Scrivere in un file di caretteri

    Hai chiuso lo stream?
  • Re: Scrivere in un file di caretteri

    Walter995 ha scritto:


    Ho controllato la dimensione ma dice 0 byte. Com'è possibile?
    Altamente strano ...... prova a compilare/avviare da prompt comandi (non da IDE).

    Weierstrass ha scritto:


    Hai chiuso lo stream?
    Ha usato il try-with-resource (Java 7+) quindi la risorsa PrintWriter viene di certo chiusa (e comunque c'è l'auto-flush attivato).
Devi accedere o registrarti per scrivere nel forum
10 risposte