正如标题所示,我在写入外部存储时遇到了问题。我的调试设备是Nexus 5。事实上,我能够完美地从设备中读取文件(我一直在尝试使用Download文件夹中的文件),但无法写入它们。我知道我必须在设备未连接到计算机时进行操作。但是仍然没有起作用。
实际上,我在将数据写入SD卡之前尝试了读取其状态(当然没有成功)。无论设备是否连接到我的PC,状态都显示为“已安装”。我还将状态与
你必须知道的一件事是,我的手机没有外部SD卡,因为它是一个内部SD卡。这导致我的设备具有外部存储的“ /storage/emulated/0/...”目录。
我还必须指出,我已经在Android清单中实现了以下标签:
我不知道正在发生什么事情。另一件可能有帮助的事情是,我已经尝试使用winrar(适用于Android)管理文件,并且我已经能够在连接到我的PC以及没有连接到我的设备的情况下删除文件。所以我不知道该怎么做。
以下是我用来编写文件的代码。请注意,它应该读取一个图像文件(它确实这样做),将其转换为字符串,再将其转换回图像,然后保存到下载文件夹中:
实际上,我在将数据写入SD卡之前尝试了读取其状态(当然没有成功)。无论设备是否连接到我的PC,状态都显示为“已安装”。我还将状态与
Environment.MEDIA_MOUNTED_READ_ONLY
和 Environment.MEDIA_MOUNTED
进行了比较,但没有任何成功的结果。我的设备不处于这些状态之一。你必须知道的一件事是,我的手机没有外部SD卡,因为它是一个内部SD卡。这导致我的设备具有外部存储的“ /storage/emulated/0/...”目录。
我还必须指出,我已经在Android清单中实现了以下标签:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
我不知道正在发生什么事情。另一件可能有帮助的事情是,我已经尝试使用winrar(适用于Android)管理文件,并且我已经能够在连接到我的PC以及没有连接到我的设备的情况下删除文件。所以我不知道该怎么做。
以下是我用来编写文件的代码。请注意,它应该读取一个图像文件(它确实这样做),将其转换为字符串,再将其转换回图像,然后保存到下载文件夹中:
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/base_image.jpg");
// Reading a Image file from file system
FileInputStream imageInFile = new FileInputStream(file);
byte imageData[] = new byte[(int) file.length()];
imageInFile.read(imageData);
// Converting Image byte array into Base64 String
String imageDataString = encodeImage(imageData);
// Converting a Base64 String into Image byte array
byte[] imageByteArray = decodeImage(imageDataString);
File newFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "converted_image.jpg");
//Write a image byte array into file system
FileOutputStream imageOutFile = new FileOutputStream(newFile);
imageOutFile.write(imageByteArray);
imageInFile.close();
imageOutFile.close();
我该怎么办?