PC から Android WebServerApp にファイル「LICENSE.txt」をアップロードしています。NanoHTTPD は一時ディレクトリを使用して、アップロードされたファイルを保存します。一時的な場所は次のように決定されます。
tmpdir = System.getProperty("java.io.tmpdir");
私の場合、ファイルは/data/data/com.manmohan.mynanoserver/cache/NanoHTTPD-1736025823としてアップロードされます。
アップロード後、ファイルを SD カード「/storage/extSdCard/Uploads」に移動したいと考えています。
これが私がすることです:
String tempFileName = entry.getValue().toString();
File fileToMove = new File(tempFileName); // temp file path returned by NanoHTTPD
String p = "/storage/extSdCard/Uploads";
String newFile = p + "/LICENSE.txt";
File nf = new File(newFile); // I want to move file here
if (fileToMove.canWrite()) {
boolean success = fileToMove.renameTo(nf);
if (success == true) {
// LOG to console
Log.i("FILE_MOVED_TO", newFile);
} else {
Log.e("FILE_MOVE_ERROR", tempFileName);
}
} else {
Log.e("PERMISSION_ERROR_TEMP_FILE", tempFileName);
}
/data/にアクセスできません。. . ディレクトリとその中のファイル、およびファイルを移動しようとするとエラーが発生します。
しかし、この一時的なパスは機能します:
tmpdir = "/storage/extSdCard/temp-uploads-nanohttpd";
java.io.tmpdirの何が問題になっていますか? NanoHTTPD が書き込みできる場合、ファイルを移動できないのはなぜですか?