Piensa la respuesta antes de abrirla. Todas las opciones parecen razonables, y casi siempre hay un detalle que lo cambia todo.
Pregunta Java · IO
Suponiendo que tienes los permisos de lectura y escritura, ¿cuál es el resultado de compilar y ejecutar el siguiente código? ¿Y por qué?
import java.io.*;
public class Prueba {
public static void main(String[] args)
throws FileNotFoundException, IOException {
OutputStream out = new FileOutputStream("/archivo.txt");
out.write(123);
out.close();
InputStream input = new FileInputStream("/archivo.txt");
System.out.println(input.read() + " " + input.read());
input.close();
}
}- imprime
"123 0" - imprime
"123 -1" - imprime
"123 null" - se lanza una excepción en tiempo de ejecución.
Ver la respuesta
Respuesta: 2.
java Prueba123 -1
write(123) escribe un solo byte, con el valor 123. El primer read() lo devuelve, y el segundo ya no tiene nada que leer: read() devuelve -1 al llegar al final del archivo. No lanza una excepción, y tampoco puede devolver null, porque devuelve un int.
Por eso read() devuelve un int y no un byte: necesita un valor más, -1, que no se pueda confundir con ningún byte (0 a 255).
import java.io.*;, y sin ella el código no compila. Lo de «suponiendo que tienes permisos» importa: escribir en /archivo.txt, en la raíz, solo funciona como administrador. Con un usuario normal da FileNotFoundException: /archivo.txt (Permission denied), y por eso esta ejecución se hizo como root.Más preguntas de Java
- El orden de un HashSet
- wait() sin el monitor correcto
- start() con un argumento
- Dos hilos y una variable compartida
- wait() fuera de synchronized
- binarySearch con null
- Serializar una clase cuyo padre no es Serializable
- Clases internas anidadas
- Llamar a run() en vez de start()
- Un assert que nunca falla
- HashSet sin equals ni hashCode
- Campos transient al serializar
Pregunta publicada en 2013 y revisada en octubre de 2026. La respuesta se comprobó compilando y ejecutando el código con Java 25 LTS en un contenedor limpio; las salidas están copiadas de esa ejecución.
4
3
4
No lo sabia, mi opcion fue la 3 pero al ejecutar el codigo me lleve una sorpresa xD
4
4
La opción correcta es la 2, porque input.read() nos devuelve el byte 123 como entero; en este caso al introducir el int (entero) 123, que se encuentra en el rango 0 – 255 de byte no hay ningún problema y luego al no encontrar otro byte, el método input.read() nos devuelve -1. Por eso el resultado es: 123 -1
Claramente el enunciado menciona que se tienen permisos de lectura escritura sobre el archivo.