Java (leer y escribir en el archivo)

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class backup {

    public static void main(String[] args) {
        System.out.println("\nThe names in the file are:\n");
        readFromFile();
    }

    public static void readFromFile() {
        try {
            Scanner file = new Scanner(new File("Names.txt"));
            PrintWriter pass = new PrintWriter("pass.txt");
            PrintWriter fail = new PrintWriter("fail.txt");

            Scanner input = new Scanner(System.in);
            while (file.hasNext()) {
                String name = file.nextLine();
                System.out.printf("Please enter " + name + "'s mark:");
                int mark = input.nextInt();
                Scanner kybd = new Scanner(System.in);
                {
                    if (mark >= 40) {
                        // System.out.println(name + " has passed");
                        pass.println(name);
                    } else {
                        // System.out.println(name + " has failed");
                        fail.println(name);
                    }
                }
            } // end while
        } // end try
        catch (IOException ioe) {
            System.out.println("Error handling file");
        } // end catch
    }// readFromFile
}

Incapaz de escribir en el pase de archivo y fallar el archivo de nombres es solo una lista de nombres si el usuario obtiene más de 40 puntajes, sin embargo, no puedo obtener el archivo txt para llenar la salida.

Cuando inserto mi impresora de escritura en el tiempo, es solo la última entrada que se agrega al archivo txt de pasar o fallar.

Respuesta 1

El PrintWriterúnico realmente escribe cuando están cerrados ( close) o sonrojados ( flusho tal vez cuando cree que es hora ;-)).

Intente usar try-with-resources siempre que sea ​​posible, de esa manera no necesita pensar en cerrar / vaciar una transmisión o escritor. try-with-resources se encarga de que las AutoClosableimplementaciones se cierren automáticamente al final del trybloque.

Su muestra reescrita con try-with-resources (solo muestra la parte inicial):

try(
  Scanner file = new Scanner(new File("Names.txt"));
  PrintWriter pass = new PrintWriter("pass.txt");
  PrintWriter fail = new PrintWriter("fail.txt")
) {

El resto puede permanecer como está ... o si lo desea: también puede buscar la API de archivos . ¿Quizás usar Files.lineses algo para ti?

Respuesta: 2

Debe llamar a la función closeen su archivo para que se escriba en el dsisk.

De lo contrario, las modificaciones solo están en la memoria

Algo como: file.close()

Respuesta: 3

Si lo usa PrintWriter, tiene que ver closela transmisión al final. De lo contrario, solo estará en la memoria. Prueba esto:

    try {
        Scanner file = new Scanner(new File("Names.txt"));
        PrintWriter pass = new PrintWriter("pass.txt");
        PrintWriter fail = new PrintWriter("fail.txt");

        Scanner input = new Scanner(System.in);
        while (file.hasNext()) {
            String name = file.nextLine();
            System.out.printf("Please enter " + name + "'s mark:");
            int mark = input.nextInt();
            //Scanner kybd = new Scanner(System.in);
            //{
                if (mark >= 40) {
                    // System.out.println(name + " has passed");
                    pass.println(name);
                } else {
                    // System.out.println(name + " has failed");
                    fail.println(name);
                }
            //}
        } // end while
        pass.close();
        fail.close();
    } // end try
    catch (IOException ioe) {
        System.out.println("Error handling file");
    }
Respuesta: 4

Necesito agregar una imagen CMYK (java.awt.BufferedImage) a un documento PDF con iText. Estoy tratando de hacerlo con: com.lowagie.text.Image img = Image.getInstance (BufferedImage, bgColor); Esto produce un ...

Cómo puedo almacenar la consola de salida del servidor en server.log, al igual que la salida de netbeans apache output console server.log para rastrear errores de sql y mostrar system.out.println que he intentado configurar ...

Clase base animal clase pública Animal {cerdo de cordel protegido; perro de cuerda protegido; gato de cuerda protegido; public void setPig (String pig_) {pig = pig_; } public void setCat (String cat_) {cat = ...

mi pregunta es cómo ordenaría el arrayofnames y el arrayofdownloads para que estén en orden ascendente y cada nombre coincida con el número correspondiente de descargas. He estado intentando durante 4 horas y yo ...