Excepción para clases I / O

Estoy estudiando para el examen OCP estas clases de E / S:

  • Subclases de OutputStream:

    • FileOutputStream
    • BufferedOutputStream
    • DataOutputStream
    • PrintStream (veo que sus métodos write () no arrojan excepciones)
  • Subclases de escritores:

    • FileWriter
    • BufferedWriter
    • PrintWriter (veo que sus métodos write () no arrojan excepciones)
  • Subclases de lectores:

    • FileReader
    • BufferedReader
  • Subclases InputStream:

    • BufferedInputStream
    • FilterInputStream
    • ObjectInputStream

Mi pregunta: para los principales métodos de lectura y escritura (con diferentes firmas), ¿cuándo lanza cada una de estas clases la IOException? En el javadoc solo hay una frase:

IOException: si se produce un error de E / S

sin una explicación sobre los casos.

Sé esto (no sé si estos son correctos):

  • FileOutputStream arroja java.io.FileNotFoundException si el archivo no existe. Esta clase, de hecho, no crea un archivo;

  • FileWriter lanza java.io.FileNotFoundException si el archivo no existe. De hecho, esta clase no crea un archivo;

  • BufferedReader arroja java.nio.file.NoSuchFileException (subclase de IOException), si el archivo no existe;

  • FileInputStream arroja java.io.FileNotFoundException si el archivo no existe.

¡Muchas gracias!

A.

Respuesta 1

Cualquiera de estas clases emite una excepción de E / S cuando encuentran un problema durante la ejecución. Las secuencias de salida del archivo pueden generar una excepción si:

  • El archivo no existe
  • El archivo es de solo lectura
  • El sistema operativo rechaza el acceso al archivo
  • El disco que está escribiendo para dosificar no tiene espacio suficiente

Las secuencias de entrada suelen generar excepciones si:

  • La secuencia no se inicializó correctamente
  • El tipo de entrada no coincide
  • Si el archivo que se lee desde se cambia mientras se lee
  • Si el archivo no existe.
Respuesta: 2

¿Cómo actualizo los datos en un modelo Spring WebFlow y los devuelvo a la misma vista? Tengo un proyecto en el que estoy trabajando y si el usuario elige un elemento de un cuadro de selección, tengo que volver al servidor ...

Necesito obtener la matriz de bytes de todo lo que envío a la secuencia de salida. Pero en cambio obtengo 4 bytes de basura. ¿Por qué? ByteArrayOutputStream byteArrayOutputStream = nuevo ByteArrayOutputStream (); ...

Hay un código que realmente no entiendo del libro de Algoritmos de Sedgewick, específicamente la parte de Comparadores. Entiendo muy bien cómo funciona todo lo demás, por ejemplo, el algoritmo proporcionado, ...

Problema: debería analizar una cadena de fecha RFC3339. Funciona bien con ISO_ZONED_DATE_TIME: ZonedDateTime.parse ("1985-04-12T23: 20: 50.52Z", ISO_ZONED_DATE_TIME); ZonedDateTime.parse ("1996-12-19T16: 39: 57 -...