我試圖在 Android 路徑出現時復制該文件,但沒有成功,盡管它已經作為 AndroidManifest 上的權限存在,就好像該文件不存在或在那里不知道它一樣。這是一段代碼:public void onActivityResult(int requestCode, int resultCode, Intent data){ switch (requestCode) { case FILE_SELECT_CODE: if (resultCode == RESULT_OK) { Uri uri = data.getData(); String origem = uri.getPath(); File src = new File(origem); if(src.isFile()){ Log.d(TAG,src.toString()); } File root = Environment.getExternalStorageDirectory(); root = new File(root.toString(), "Kcollector/importa/import.csv"); try { copy(src,root,true); } catch (IOException e) { e.printStackTrace(); } } break; } super.onActivityResult(requestCode, resultCode, data);}public static void copy(File origem, File destino, boolean overwrite) throws IOException{ Date date = new Date(); if (destino.exists() && !overwrite){ System.err.println(destino.getName()+" já existe, ignorando..."); return; } FileInputStream fisOrigem = new FileInputStream(origem); FileOutputStream fisDestino = new FileOutputStream(destino); FileChannel fcOrigem = fisOrigem.getChannel(); FileChannel fcDestino = fisDestino.getChannel(); fcOrigem.transferTo(0, fcOrigem.size(), fcDestino); fisOrigem.close(); fisDestino.close(); Long time = new Date().getTime() - date.getTime(); System.out.println("Saiu copy"+time);}嘗試復制時返回的錯誤:W/System.err:java.io.FileNotFoundException:/external_storage/Kcollector/importa/kvendasajustado.csv(沒有這樣的文件或目錄) W/System.err:在 java.io.FileInputStream.open0(本機方法)
1 回答

偶然的你
TA貢獻1841條經驗 獲得超3個贊
檢查運行時權限或使用第一個響應中指示的方法
public static void copy(File src, File dst) throws IOException {
InputStream in = new FileInputStream(src);
try {
OutputStream out = new FileOutputStream(dst);
try {
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
} finally {
out.close();
}
} finally {
in.close();
}
}
最后檢查 url 是否格式正確。否則你可以用斷點調試(搜索這些詞),并找到問題的確切來源
添加回答
舉報
0/150
提交
取消