Android 创建的文件夹在文件资源管理器中不可见。。
我在SD卡上创建文件夹和文件时遇到问题 代码如下:Android 创建的文件夹在文件资源管理器中不可见。。,android,file,sd-card,createfile,create-directory,Android,File,Sd Card,Createfile,Create Directory,我在SD卡上创建文件夹和文件时遇到问题 代码如下: File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() + "/folder"); boolean success; if (!folder.exists()) { success = folder.mkdirs(); }
File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() + "/folder");
boolean success;
if (!folder.exists()) {
success = folder.mkdirs();
}
File obdt = new File(folder, "file.txt");
try {
success = obdt.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
使用此代码,我希望在SD卡的下载
文件夹中创建文件夹文件夹
,并在该文件夹中创建文件文件
。我希望用户可以访问该文件。所以我想把它放在一个共享文件夹中success
变量是true
,当我再次运行代码时,文件夹已经存在,不在if块中但是我在文件资源管理器中看不到SD卡上创建的文件夹和文件。
信息:
getExternalStoragePublicDirectory(Environment.DIRECTORY\u下载)。toString()
返回storage/sdcard/Download
我使用的是Galaxy Nexus。如果您还没有这样做,您需要通过在清单中添加以下行,为您的应用程序授予写入SD卡的正确权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
有效。logcat有任何错误吗?
其他:尝试类似Log.I(“路径名”,folder.absolutePath());然后查看您的日志,确保您正在创建您认为它所在的文件夹。试试这个
File dir = new File(Environment.getExternalStorageDirectory()
+ "/XXX/Wallpapers/");
File[] files = dir.listFiles();
if (files == null)
{
int numberOfImages = 0;
BitmapDrawable drawable = (BitmapDrawable) imageView
.getDrawable();
Bitmap bitmap = drawable.getBitmap();
File sdCardDirectory = Environment
.getExternalStorageDirectory();
new File(sdCardDirectory + "/XXX/Wallpapers/").mkdirs();
File image = new File(sdCardDirectory
+ "/XXX/Wallpapers/Sample" + numberOfImages + ".JPG");
boolean success = false;
FileOutputStream outStream;
try {
outStream = new FileOutputStream(image);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
success = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (success) {
Toast.makeText(
getApplicationContext(),
"Image saved successfully in Sdcard/XXX/Wallpapers",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),
"Error during image saving", Toast.LENGTH_LONG)
.show();
}
别忘了在清单中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在资源管理器中看不到文件夹/文件?可能是因为MediaScanner处于活动状态,但没有添加文件。您可以在程序中执行此操作,也可以在手机设置的某个位置切换媒体扫描仪 该死的!:) 现在我解决了我的问题…我误解了在文件系统中创建文件的操作
当我提到文件资源管理器时,我指的是操作系统的文件资源管理器,而不是DDMS中的文件资源管理器:)
我想当我创建一个文件时,我会在操作系统的文件资源管理器中看到它,但当设备连接到PC时,文件只能在DDMS文件资源管理器中看到
抱歉,我是Android新手;)
当应用程序在没有PC连接的情况下独立运行,然后我连接PC时,我会看到创建的文件和文件夹:)
感谢您的帮助显然,MTP中存在一个已知的错误 所有使用MTP而不是USB大容量存储的手机在使用USB电缆连接到计算机时都无法正确显示文件列表。设备上运行的Android应用程序也无法查看这些文件
它实际上与2012年一样古老我遇到了同样的问题:创建的文件和文件夹在写入SD卡后不会立即显示,尽管文件已刷新并关闭 它们不会通过USB或手机上的文件浏览器显示在您的计算机上 我观察到三件事:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(myArrayList);
try {
File externalDir = getExternalStorageDirectory();
File newFile = new File(externalDir, "myfile.txt");
FileOutputStream os = new FileOutputStream(newFile);
os.write(json.getBytes());
os.flush();
os.close();
Timber.i("saved file to %s",newFile.getAbsoluteFile().toString());
}catch (Exception ex)
{
Toast.makeText(getApplicationContext(), "Save to private external storage failed. Error message is " + ex.getMessage(), Toast.LENGTH_LONG).show();
}
/storage/emulated/0/
开头,这并不意味着它将位于SD卡上,而是可能位于主存储器上adb pull…
立即获取文件。您也可以使用DDMS Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(myArrayList);
try {
File externalDir = getExternalStorageDirectory();
File newFile = new File(externalDir, "myfile.txt");
FileOutputStream os = new FileOutputStream(newFile);
os.write(json.getBytes());
os.flush();
os.close();
Timber.i("saved file to %s",newFile.getAbsoluteFile().toString());
}catch (Exception ex)
{
Toast.makeText(getApplicationContext(), "Save to private external storage failed. Error message is " + ex.getMessage(), Toast.LENGTH_LONG).show();
}
及
为什么是这样?这似乎是你第一次体验时不得不忍受的另一种“安卓ISM”。你有没有例外的说法?如果您使用值
false
初始化success
该怎么办?不,我没有例外…未初始化时,success为false您是否能够找到这些文件夹“storage/sdcard/Download”?不,存储文件夹为空…我在linux下工作…可能有问题吗?!路径为:/storage/sdcard0/Download/folder创建文件obdt=new文件(“/sdcard/File.txt”);已成功,但我在文件资源管理器中未看到--这是werid。您是否可以尝试从终端执行adb shell ls/sdcard/file.txt
?图像已成功保存在sdcard/XXX/wallpaps中,如果我再次运行,则文件为!=null,不在if块中…看起来一切都是正确的,但在文件资源管理器中,我看不到文件夹和图片!--您还可以在文件资源管理器中看到其他内容,并尝试在您的移动/设备上运行它,您肯定会得到它
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(myArrayList);
try {
File externalDir = getExternalStorageDirectory();
File newFile = new File(externalDir, "myfile.txt");
FileWriter fw = new FileWriter(newFile);
fw.write(json);
fw.flush();
fw.close();
Timber.i("saved file to %s",newFile.getAbsoluteFile().toString());
}catch (Exception ex)
{
Toast.makeText(getApplicationContext(), "Save to private external storage failed. Error message is " + ex.getMessage(), Toast.LENGTH_LONG).show();
}