error download file from ftp

  • Replies:1
yakup yok
  • Forum posts: 1

Feb 26, 2015, 12:19:18 AM via Website

sorry for my bad english. i want to make ftp downloader and uploader. i find sample code. this code working in java but not working in android. i am using eclipse. how i can fix this error? :(
i am using this sample: codejava.net/java-se/networking/ftp/java-ftp-file-download-tutorial-and-example

1-3 permission(phone state,internet,sd write) ok.
2-apache commons-net libs ok.

image

and i get this error:

image

and full code

package com.example.deneme10;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.BufferedOutputStream;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;


public class MainActivity extends Activity {
    private ProgressDialog dialog=new ProgressDialog(MainActivity.this);



    public class BackgroundTask extends AsyncTask<Void, Void, Void> {

          @Override
          protected void onPreExecute() {
             super.onPreExecute();
             dialog.setMessage("Yükleniyor");
             dialog.show();
          }

          @Override
          protected Void doInBackground(Void... params) {


              String server = "site adresim";
              int port = 21;
              String user = "kullanıcı adım";
              String pass = "şifrem";

              FTPClient ftpClient = new FTPClient();
              try {

                  ftpClient.connect(server, port);
                  ftpClient.login(user, pass);
                  ftpClient.enterLocalPassiveMode();
                  ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

                  // APPROACH #1: using retrieveFile(String, OutputStream)
                  String yol = Environment.getExternalStorageDirectory().toString();
                  String remoteFile1 = "/video.mp4";
                  File downloadFile1 = new File(yol+"/video.mp4");
                  OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1));
                  boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
                  outputStream1.close();

                  if (success) {
                      System.out.println("File #1 has been downloaded successfully.");
                  }

                  // APPROACH #2: using InputStream retrieveFileStream(String)
                  String yol2 = Environment.getExternalStorageDirectory().toString();
                  String remoteFile2 = "/sarki.mp3";
                  File downloadFile2 = new File(yol2+"/sarki.mp3");
                  OutputStream outputStream2 = new BufferedOutputStream(new FileOutputStream(downloadFile2));
                  InputStream inputStream = ftpClient.retrieveFileStream(remoteFile2);
                  byte[] bytesArray = new byte[4096];
                  int bytesRead = -1;
                  while ((bytesRead = inputStream.read(bytesArray)) != -1) {
                      outputStream2.write(bytesArray, 0, bytesRead);
                  }

                  success = ftpClient.completePendingCommand();
                  if (success) {
                      System.out.println("File #2 has been downloaded successfully.");
                  }
                  outputStream2.close();
                  inputStream.close();

              } catch (IOException ex) {
                  System.out.println("Error: " + ex.getMessage());
                  ex.printStackTrace();
              } finally {
                  try {
                      if (ftpClient.isConnected()) {
                          ftpClient.logout();
                          ftpClient.disconnect();
                      }
                  } catch (IOException ex) {
                      ex.printStackTrace();
                  }
              }


             return null;
          }

          @Override
          protected void onPostExecute(Void result) {
             super.onPostExecute(result);
             dialog.dismiss();
          }

          @Override
          protected void onProgressUpdate(Void... values) {
             super.onProgressUpdate(values);
          }

          @Override
          protected void onCancelled(Void result) {
             super.onCancelled(result);
          }

       }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new BackgroundTask().execute();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Davide R.

Reply
Davide R.
  • Forum posts: 1

Dec 1, 2015, 12:58:58 PM via Website

This is my mod and it works fine! TNX to you!

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;

import org.apache.commons.net.ftp.FTPClient;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class FTP extends Activity {

ProgressDialog prgDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    new BackgroundTask().execute();
}

public class BackgroundTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        prgDialog = new ProgressDialog(FTP.this);
        prgDialog.setMessage("Attendi...");
        prgDialog.setCancelable(false);
        prgDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {


        String server = "ftp.trm.890m.com";
        int port = 21;
        String user = "u645635020";
        String pass = "dvd83itrm";

        FTPClient ftpClient = new FTPClient();
        try {

            ftpClient.connect(server, port);
            ftpClient.login(user, pass);
            ftpClient.enterLocalPassiveMode();
            ftpClient.setFileType(org.apache.commons.net.ftp.FTP.ASCII_FILE_TYPE);

            // APPROACH #1: using retrieveFile(String, OutputStream)
            String yol = Environment.getExternalStorageDirectory().toString();
            String remoteFile1 = "/public_html/turni.xlsm";
            File downloadFile1 = new File(yol+"/turni.xlsm");
            OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1));
            boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
            outputStream1.close();

            if (success) {
                System.out.println("File #1 has been downloaded successfully.");
            }

        } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        prgDialog.dismiss();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onCancelled(Void result) {
        super.onCancelled(result);
    }

}

}

Reply