¿Cómo utilizar flujos de bytes para cargar y descargar archivos en Java?
FileInputStream;
importar java.io.FileOutputStream;
importar java.io.InputStream;
importar org.apache.FTPFile;
clase pública CCFCCBFTP {
/**
* Subir archivos
* Subir archivos
*
* @param fileName
* @param PlainFilePathplainFilePath ruta ruta
* @param filepath
* @return
* @throws Excepción
*/
cadena estática pública fileUploadByFtp(String PlainFilePath, String fileName, String filepath) lanza una excepción {
FileInputStream fis = null; p> p>
ByteArrayOutputStream bos = null
FTPClient ftpClient = new FTPClient();
String bl = "falso"
prueba { p>
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = nuevo byte[1024 ];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count) ;
}
bos.flush();
Log.info("Se inició la carga cifrada del archivo");
Log .info("Conectando al servidor de carga remota" + CCFCCBUtil.CCFCCBHOSTNAME+": "+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient. login( CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles(); Log.info("Comprobando si existe la ruta del archivo: /" +filepath );
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("Consultando una ruta de archivo que no existe: "+"/" + ruta de archivo );
return bl;
}
ftpClien
t.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// Establecer tipo de archivo (binario)
ftpClient.setFileType(FTPClient .BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Ruta para guardar el archivo de registro: "+"/"+filepath+"/");
return bl;
} catch (Excepción e) {
throw e;
} finalmente {
if (fis ! = null) {
prueba {
fis.close();
} captura (Excepción e) {
Log.info (e.getLocalizedMessage(), e);
}
}
if (bos != null) {
prueba {
bos.close();
} captura (Excepción e) {
Log.info(e.getLocalizedMessage(), e); >
}
}
}
}
}
/**
* Descargar archivo
*
* @param localFilePath
* @param fileName
* @param routeFilepath p>
* @return <
* @throws Excepción
*/
archivo de cadena estática públicaDownloadByFtp(String localFilePath, String fileName, String routeFilepath) Lanza una excepción {
FileInputStream fis = null
ByteArrayOutputStream bos = null
FileOutputStream fos = null
FTPClient ftpClient = new; FTPClient();
String SFP = System.GetProperty("file.SFP")getProperty("file.separator");
String bl = "false";
intente {
Log.info("Se inició la descarga y descifrado del archivo");
Log.info("Conexión al servidor de descarga remota "+CCFCCBUtil.CCFCCBHOSTNAME+": "+22);
ftpClient.connect(CCFCCBUtil.changeWorkingDirectory(routeFilepath);
bl = "false";
fs = ftpClient.listFiles() ;
> for (FTPFile ff: fs) {
if (ff.getName().equals(fileName)) {
bl = "true";
Log.info("Se inició la descarga del archivo." )
ftpClient.setBufferSize(1024);
// Establece el tipo de archivo (binario)
ftpClient .setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream es = ftpClient.retrieveFileStream(FTPClient.BINARY_FILE_TYPE);
FTPClient.retrieveFileStream(FTPClient.BINARY_FILE_TYPE)retrieveFileStream(fileName);
bos = new ByteArrayOutputStream(is.available());
byte[] buffer = nuevo byte[1024];
int count = 0;
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
fos = new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("Fin de la descarga del archivo: " + localFilePath);
}
}
Log.info("Comprobando para ver si el archivo está guardado: " + fileName + " "+bl);
if("Comprobando si el archivo está guardado: " + fileName + " "+bl).
if ("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("La consulta no tiene resultados, verifique nuevamente más tarde." getLocalizedMessage(), e);
}
}
}
if (bos ! = null) {
intente {
bos.close();
} catch (Excepción e) {
Log.info(e. getLocalizedMessage(), e );
}