无法将文件路径转换为字节数组android [重复]
Posted
技术标签:
【中文标题】无法将文件路径转换为字节数组android [重复]【英文标题】:Failed in converting File path to byte array android [duplicate] 【发布时间】:2018-03-15 12:12:00 【问题描述】:我正在尝试将文件转换为字节数组格式。选择的实际路径在存储中,但仍然抛出异常“File Not Found”。谁能帮我解决这个问题?
感谢您宝贵的时间!..
调用文件管理器
btn_click.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, 7);
);
得到响应
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
// TODO Auto-generated method stub
switch (requestCode)
case 7:
if (resultCode == RESULT_OK)
String filePath = data.getData().getPath();
System.out.println("====== path : "+filePath);
File file = new File(filePath);
byte[] bytesArray = new byte[(int) file.length()];
FileInputStream fis = null;
try
fis = new FileInputStream(file);
fis.read(bytesArray); //read file into bytes[]
fis.close();
System.out.println("====== bytesArray "+bytesArray);
catch (FileNotFoundException e)
System.out.println("====== File Not Found.");
e.printStackTrace();
catch (IOException e)
System.out.println("====== Error Reading The File. IOException");
e.printStackTrace();
【问题讨论】:
另见this similar question。您没有处理文件。使用ContentResolver
和openInputStream()
在Uri
标识的内容上获得InputStream
。不要尝试使用getPath()
。
【参考方案1】:
添加以下等级其 Apache commons gradle
compile 'org.apache.commons:commons-io:1.3.2'
然后使用此代码
byteArray = FileUtils.readFileToByteArray(file);
【讨论】:
我尝试使用您的建议,当我尝试运行应用程序时,显示错误为错误:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败。 > com.android.builder.dexing.DexArchiveMergerException: 无法合并 dex 对此有什么想法吗? 仍然抛出“找不到文件”。但我的文件路径位置显示为 /document/primary:file/myDoc_4.pdf。以上是关于无法将文件路径转换为字节数组android [重复]的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在android studio中将音频文件转换为字节数组