我的应用程序应该从图片库获取一张图像,并将其放入app数据目录中。我的实现是尝试将图库中的图像直接共享到应用程序中,并使用它的uri将其从源位置复制到android应用程序目录中。
接收图像URI后的:
copyFile(new File(mImageUri.getPath()), getFilesDir());
copyFile方法:
public void copy(File src, File dst) throws IOException {
try (InputStream in = new FileInputStream(src)) {
try (OutputStream out = new FileOutputStream(dst)) {
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
}
}
}
问题是,我得到了一个FileNotFound异常,如何解决这个问题?
发布于 2021-11-09 10:14:35
首先,使用这个获取文件:
private fun openFile() {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/pdf"
}
fileRequest.launch(intent)
}
fileRequest:
private val fileRequest =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { resultData ->
resultData?.data?.also { data ->
val myFile = File(
requireContext().filesDir,
"test_file.pdf"
) // filesDir - Your app's ordinary, persistent files reside directory
val inputStream: InputStream =
requireActivity().contentResolver.openInputStream(data.data!!)!!
val outputStream: OutputStream = FileOutputStream(myFile)
val buf = ByteArray(1024)
var len: Int
while (inputStream.read(buf).also { len = it } > 0) {
outputStream.write(buf, 0, len)
}
outputStream.close()
inputStream.close()
}
}
将行type = "application/pdf"
更改为指定,您希望复制哪个文件之王?
另外,fileRequest
是在片段范围内声明的(如果您不喜欢它,旧的"startActivityForResult“),它会很好地工作。
此外,openInputStream(data.data!!)
,data.data!!是已挑选文件的uri
https://stackoverflow.com/questions/68705059
复制相似问题