gpt4 book ai didi

android - .renameTo() 的结果被忽略

转载 作者:行者123 更新时间:2023-11-30 01:54:28 27 4
gpt4 key购买 nike

我正在尝试通过 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),它说调用此方法的结果被忽略。但是为什么会被忽略呢?有办法解决这个问题吗?

提前谢谢你:)

最佳答案

错误是非常直接的,因为它都记录在案了:

https://developer.android.com/reference/java/io/File.html#renameTo(java.io.File)

Many failures are possible. Some of the more likely failures include:

  • Write permission is required on the directories containing both the source and destination paths.
  • Search permission is required for all parents of both paths.
  • Both paths be on the same mount point. On Android, applications are most likely to hit this restriction when attempting to copy between internal storage and an SD card.

https://developer.android.com/reference/java/io/FileNotFoundException.html

Thrown when a file specified by a program cannot be found

我敢打赌,如果您检查文件是否存在代码:

if(f.exists()){

你会发现 foto_path不是现有文件,或者您应该检查 foto_path也在Environment.getExternalStorageDirectory()里面.

如果它不在同一个挂载点中,您必须将文件复制过来(使用新名称)而不是仅仅重命名。

关于android - .renameTo() 的结果被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32482737/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com