1

FTP 経由でファイルをアップロードしようとしていますが、アップロードする前に名前を 2 つの editText の入力に変更する必要があります。これを行うには、次のコードを使用します。

public FTPClient client = new FTPClient();

    public void upload_klik (View view) {
        EditText week_text = (EditText) findViewById(R.id.week_edit);
        EditText pagina_text = (EditText) findViewById(R.id.pagina_edit);
        String w_val = week_text.getText().toString();
        String p_val = pagina_text.getText().toString();
        upload_task up = new upload_task();
        up.execute(w_val, p_val);
    }

    protected class upload_task extends AsyncTask<String, Object, String> {

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

            String w = params[0];
            String p = params[1];

            Intent intent = getIntent();
            Bundle bundle = intent.getExtras();
            String ret = "Done!";
            if(!bundle.isEmpty()) {
                String afdeling_url = bundle.getString("afdeling_url", "DKW/");
                String afdeling_preFix = bundle.getString("afdeling_preFix", "dkw");
                String locatie_url = bundle.getString("locatie_url", "/delf_wend/");

                String new_fileName = afdeling_preFix +"_" + "w" + w + "_" + "p" + p + ".jpg";

                System.out.println(new_fileName);

                File f = new File(foto_path);
                File sdcard = Environment.getExternalStorageDirectory();
                File to = new File(sdcard, new_fileName);
                f.renameTo(to);

                if(f != null) {

                    try{
                        client.setPassive(true);
                        client.setAutoNoopTimeout(30000);
                        client.connect(FTP_HOST, 21);
                        client.login(FTP_USER, FTP_PASS);
                        client.setType(FTPClient.TYPE_BINARY);
                        System.out.println(locatie_url + afdeling_url);
                        client.changeDirectory(locatie_url + afdeling_url);
                        client.upload(to);

                        restart();

                    }
                    catch (Exception e){
                        e.printStackTrace();
                        try {
                            client.disconnect(true);
                        }
                        catch (Exception e2) {
                            e2.printStackTrace();
                        }
                    }
                }

            }
            return ret;
        }
    }

しかし、アップロードしようとすると、Logcat が次のように表示します。

09-09 16:33:17.794  23674-25966/nl.knapper_development.jrw_uploader I/System.out﹕ slag_w11_p222.jpg
09-09 16:33:17.994  23674-25966/nl.knapper_development.jrw_uploader I/System.out﹕ /delf_wend/SLAG/
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ java.io.FileNotFoundException: /slag_w11_p222.jpg
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2577)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2457)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at nl.knapper_development.jrw_uploader.upload$upload_task.doInBackground(upload.java:154)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at nl.knapper_development.jrw_uploader.upload$upload_task.doInBackground(upload.java:119)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-09 16:33:18.024  23674-25966/nl.knapper_development.jrw_uploader W/System.err﹕ at java.lang.Thread.run(Thread.java:818)

私は問題を関数に絞り込みましたf.renameTo(new_fileName)。このメソッドを呼び出した結果は無視されると言われています。しかし、なぜ無視されるのでしょうか。そして、これを回避する方法はありますか?

前もって感謝します :)

4

2 に答える 2