Leer y escribir desde archivos Java

¿Cómo puedo leer un número, cadena o un carácter del archivo? Encuentro muchas formas, pero no sé cómo es el mejor y claro enfoque. Quiero hacer operaciones de entrada / salida como la consola del sistema.

Creé 2 archivos input.in y output.out y quiero leer un número de input.in e imprimir el número en output.out.

import java.util.Scanner;
import java.io.*;

public class MainClass {

    public static void main(String[] args) throws IOException {
        File file = new File("input.in");
        Scanner scanner = new Scanner(file);
        String a = scanner.nextLine();
        System.out.println(a);
    }
}

Primero quiero probar si funciona para leer del archivo, pero obtuve esto:

Exception in thread "main" java.util.NoSuchElementException: No line found
  at java.util.Scanner.nextLine(Unknown Source)
  at MainClass.main(MainClass.java:9)

En el archivo input.in tengo:

archivo

i / o

Respuesta 1

Puedes usar FileInputStreamy FileOutputStreampara hacerlo ..

Espero que esto sirva a tu propósito

import java.util.Scanner;
import java.io.*;

public class MainClass {

    public static void main(String[] args) throws IOException {
        FileInputStream inputStream = null;
        FileOutputStream outputStream = null;
        Scanner sc = null;
        try {
            inputStream = new FileInputStream("IN File");
            outputStream = new FileOutputStream("OUT File");
            sc = new Scanner(inputStream, "UTF-8");
            while (sc.hasNextLine()) {
                String line = sc.nextLine();
                System.out.println(line);
                byte[] strToBytes = line.getBytes();
                outputStream.write(strToBytes);
                outputStream.write(System.getProperty("line.separator").getBytes());
            }
            // note that Scanner suppresses exceptions
            if (sc.ioException() != null) {
                throw sc.ioException();
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (inputStream != null) {
                inputStream.close();
            }
            if (sc != null) {
                sc.close();
            }
        }
    }
}
Respuesta: 2

Como RealSkeptic mencionó en los comentarios, sospecho que su aplicación no puede encontrar el archivo que ha proporcionado. Le sugiero que adopte el siguiente código:

import java.util.Scanner;
import java.io.*;

public class MainClass {
    public static void main(String[] args) throws Exception {
        String filePath = "c:\\absolute\\path\\to\\input.in";
        File file = new File(filePath);
        if(file.exists()) {
            System.out.println("Reading contents of file at: " + filePath)
            try (Scanner scanner = new Scanner(file)) {
                while(scanner.hasNext()) {
                    String a = scanner.nextLine();
                    System.out.println(a);
                }
            }
        }
        else {
            System.out.println("File not found at: " + filePath);
        }
    }
}

Referencias

Respuesta: 3

Tengo una lista de elementos en JList, lo que quiero es arrastrar un elemento a la vez desde JList y soltarlo en una columna en particular, el elemento debe agregarse solo en esa columna.

Estoy creando una aplicación Java RESTAPI Spring Boot que utiliza spark para obtener algunos datos del servidor. Cuando intento convertir del conjunto de datos a la lista, falla. He intentado jdk8 y jdk11 para compilar y ...

Estoy desarrollando un software en la universidad y mi compañero y yo estamos dividiendo el trabajo y él me envía el código en bruto y lo confirmo, pero quiero confirmar su código en mi NetBeans 11.0 en su nombre pero ...

Estoy tratando de acceder a jTextArea dentro de main (), pero recibí un error que indica que "No se puede acceder a los miembros no estáticos en un contexto estático". Por lo tanto, accedí de la siguiente manera: (usando netbeans) public ...