Java obtiene la ruta del archivo de lectura ftp en el navegador
Pregunta, ¿estás intentando realizar cargas y descargas por ftp?
Primero debe instalar un programa de servidor ftp, iniciarlo y luego descargar un programa de cliente ftp para probar si se puede conectar. Esta parte debe probarse primero.
FTPClient;
importar org.apache.commons.net.ftp.FTPReplyFTPReply;
prueba de clase pública {
ftpClient privado;
/**
*
* @param ruta La ruta que se cargará en el servidor ftp
* @param dirección dirección
* @param puerto número de puerto
* @param nombre de usuario nombre de usuario
* @param contraseña contraseña
* @return
* @throws Excepción
*/
conexión booleana privada (ruta de cadena, dirección de cadena, puerto int, nombre de usuario de cadena, contraseña de cadena) arroja una excepción {
resultado booleano = false ;
ftp = new FTPClient();
int respuesta;
ftp.connect(dirección, puerto);
ftp.login(nombre de usuario, contraseña);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
respuesta = ftp.getReplyCode()makeDirectory(file.getName()); p>
ftp.changeWorkingDirectory(file.getName());
String[] archivos = file.list();
for (int i = 0; i lt ; archivos .length; i) {
Archivo archivo1 = nuevo Archivo(file.getPath() "\\" archivos[i]);
if(file1.isDirectory() ){
upload(file1);
ftp.ChangeToParentDirectory() almacena archivos (file2.getName(), entrada);
input.close() ;
}
}
}else{
Archivo archivo2 = nuevo Archivo(file.getPath());
FileInputStream entrada = new FileInputStream(file2);
ftp.storeFile(file2.getName(), entrada);
input.close();
}
}
}
public static void main(String[] args) arroja una excepción{
prueba t = nueva prueba();
t.connect("", "localhost", 21, "yhh", "yhhazr");
p>
Archivo archivo = nuevo Archivo("e:\uploadify");
t.upload(archivo);
}
}
}
2.2 Código de descarga
Aquí no se utiliza ningún filtro. Si utiliza un filtro, puede filtrar los archivos que desee.
clase pública Ftp {
/**
* @param args
*/
pública estática void main(String[] args) {
// TODO genera automáticamente códigos auxiliares de método
Ftp ftp = new Ftp();
String hostname = "www .strawberry.com";
Puerto entero = 21;
Nombre de usuario de cadena = "nombre de usuario";
Contraseña de cadena = "contraseña";
String remoto = "/c.txt";
String local = "/home/tin/LeonChen/FTP/"
prueba {
ftp.connect(nombre de host, puerto, nombre de usuario, contraseña);
System.out.println("Estado de recepción:" ftp.download(remoto, local));
ftp .disconnect();
} catch (IOException e) {
// TODO Bloque catch generado automáticamente
e.printStackTrace();
}
}
ftpClient privado ftpClient = new FTPClient();
/*
* * Conectarse a FTP ¿servidor?
* * @param nombre de host nombre de host?
* * @param puerto puerto ?
* * @param nombre de usuario ¿Nombre de usuario?
* * @param contraseña Contraseña Contraseña ?
* * @return Si la conexión fue exitosa
* * @throws IOException
*/
conexión booleana privada (nombre de host de cadena, puerto int, nombre de usuario de cadena,
Contraseña de cadena) arroja IOException {
ftpClient.connect(nombre de host, puerto
ftpClient.setControlEncoding("UTF-8"); if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
if (ftpClient.login(nombre de usuario, contraseña)) {
devuelve verdadero
} <
}
Desconectar();
Devuelve falso
}
/*< /
p>
* Descarga de archivos desde el servidor FTP, admite carga intermitente, informe de porcentaje de carga
*
* @param ruta remota del archivo remoto
*
* @param local ruta del archivo local
*
* @return estado de carga
*
* @ lanza IOException
*/
descarga pública DownloadStatus(String remoto, lanza IOException {
// Establece el modo pasivo
ftpClient. listFiles (new String(remote(
.getBytes("UTF-8"), "iso-8859-1"));
if (files.length != 1) {
System.out.println("El archivo remoto no existe");
return DownloadStatus.Remote_File_Noexist;
}
largo lRemoteSize = files[0].getSize();
String fildName = files[0].getName();
// El archivo existe en Descarga local de punto de interrupción
Archivo f = nuevo archivo (nombre de campo local);
if (f.exists() ){
long localSize = f. ();
if (localSize gt; = lRemoteSize) {
System.out.println("El archivo local es más grande que el archivo remoto, descarga cancelada");
return DownloadStatus.Local_Bigger_Remote;
}
// Ejecutar reanudación del punto de interrupción y registrar el estado
FileOutputStream out = new FileOutputStream(f, true);
ftpClient.setRestartOffset(f, true)setRestartOffset(localSize);
InputStream in = ftpClient.retrieveFileStream(new String(remote.getBytes("UTF-8") , "iso -8859-1");
byte[] bytes = nuevo byte[1024];
paso largo = lRemoteSize / 100;
proceso largo = localSize / paso;
int c;
mientras ((c = in.read(bytes)) ! = -1) {
salida.escribir(b
ytes, 0, c);
localSize = c;
long nowProcess = localSize/step;
if (nowProcess gt; proceso) {
proceso = nowProcess;
if (proceso 10 == 0)
System.out.println("Progreso de la descarga: " proceso);
// TODO actualiza el progreso de descarga del archivo, el valor se almacena en la variable de proceso
}
}
in.close();
out.close();
booleano isDo = ftpClient.completePendingCommand();
if (isDo) {
resultado = DownloadStatus.Download_From_Break_Success ;
} más {
resultado = DownloadStatus.Download_From_Break_Failed
}
} más {
OutputStream; salida = nuevo FileOutputStream(f);
EntradaStream in = ftpClient.RetrieveFileStream(nuevo FileOutputStream(f));