¿Cuándo (con qué frecuencia) abrir / cerrar flujos de entrada / salida?

Estoy tratando de escribir un FTPprograma cliente y tengo flujos de entrada y salida para transferir archivos entre el servidor y mi computadora .

Cuando estaba pensando en cómo diseñar la clase, no podía decidir si abrir una nueva InputStreamcada vez que llamo a la función y luego cerrarla inmediatamente (como en el ejemplo a continuación).

O simplemente haga esto en el constructor y ciérrelo mientras sale del programa. ¿Importa? ¿Tiene sentido hacerlo de esta manera, especialmente si el usuario tiene la opción de decidir cargar otro archivo al servidor inmediatamente después de hacerlo una vez?

public class FTPClientP extends FTP{
    private InputStream is;

    public FTPC(String serverAdd, int connection_port){
        is = null;

    }
    public int connectToServer() throws  IOException{

    }

    public boolean uploadToServer(File file) throws IOException{

        boolean uploaded = false;

        is = new FileInputStream(file);

        String fileName = myFile.getName();

        uploaded = ftp.storeFile(fileName, is);

        is.close();

        return uploaded;
    }

}
Respuesta 1

En primer lugar, permítanme decir que soy un novato completo con PNL. Aunque, como sigue leyendo, eso probablemente se volverá sorprendentemente evidente. Estoy analizando las páginas de Wikipedia para encontrar todas las menciones de la página ...

Estoy escribiendo mi primera aplicación de Google App Engine, principalmente como una experiencia de aprendizaje, es una especie de Pastebin muy simple ... No quiero lidiar con el spam, así que pensé que exigir a los usuarios iniciar sesión ...

Estoy tratando de usar la codificación externa de archivos .dll en c #, en mi aplicación Java, lo que sé sobre el dll que contiene interfaces con funciones que podemos usar, puedo cargar el dll en mi aplicación java, ...

Me preguntaba cómo contar diferentes campos de un objeto usando una sola secuencia. Sé que puedo contar fácilmente una sola propiedad de un objeto usando streams (countedWithStream) o incluso usando un para ...