2012-11-15 29 views
5

Tôi gặp sự cố khi tạo thư mục và tệp trên sdcard.Thư mục đã tạo không hiển thị trong trình khám phá tệp ..

Dưới đây là các mã:

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(); 
    } 

Với mã này, tôi hy vọng sẽ tạo ra các thư mục trong thư mục folderDownload của sdcard và trong này tập tin file. Tôi muốn người dùng có thể truy cập tệp. Vì vậy, tôi muốn đặt nó trong một thư mục được chia sẻ.
Biến số successtrue và khi tôi chạy lại mã, thư mục đã tồn tại và không đến trong if-block.
Nhưng tôi không thể thấy thư mục và tệp đã tạo trên sdcard trong trình khám phá tệp.

Thông tin: getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() trả về storage/sdcard/Download

Tôi làm việc với Galaxy Nexus.

+0

bạn có bất kỳ ngoại lệ nào nói về công cụ PERMISSION không? nếu bạn khởi tạo 'thành công' với giá trị' false' thì sao? – dumbfingers

+0

không, tôi không có ngoại lệ ... thành công là sai khi nó không được khởi tạo –

+0

Bạn có thể định vị các thư mục này "storage/sdcard/Download" không? –

Trả lời

2

Chết tiệt! :)

Bây giờ tôi đã giải quyết được sự cố của mình ... Tôi đã hiểu nhầm hoạt động tạo tệp trong hệ thống tệp.
Khi tôi nói về trình khám phá tệp, tôi có nghĩa là trình khám phá tệp của hệ điều hành và KHÔNG phải trình khám phá tệp trong DDMS :).
Tôi nghĩ khi tạo một tệp, tôi sẽ thấy tệp đó trong trình thám hiểm tệp của hệ điều hành nhưng khi thiết bị được kết nối với PC, tệp chỉ có thể được nhìn thấy trong trình khám phá tệp DDMS.
Xin lỗi Tôi mới đến Android;)

Khi App đang chạy độc lập mà không cần kết nối máy tính và sau đó tôi kết nối với máy tính tôi thấy các tập tin và thư mục được tạo ra tất nhiên :)

Nhờ sự giúp đỡ

0

Nếu bạn chưa làm như vậy, bạn sẽ cần phải cung cấp cho ứng dụng của bạn được sự cho phép đúng ghi vào thẻ SD bằng cách thêm dòng dưới đây để Manifest của bạn:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Nếu bạn đã thực hiện xem liệu:

File obdt = new File(/sdcard/folder/file.txt) 
try { 
    success = obdt.createNewFile(); 
} catch (IOException e1) { 
    e1.printStackTrace(); 
} 

hoạt động.

+0

Đã thực hiện –

+0

@ TobiWeißhaar Đã chỉnh sửa –

+0

việc tạo tệp obdt = new File ("/ sdcard/file.txt"); là thành công nhưng tôi không thấy nó trong tập tin explorer -.- –

0

Bất kỳ lỗi nào từ logcat?
Khác: thử một cái gì đó như Log.I ("PATHNAME", folder.absolutePath()); và sau đó nhìn vào logcat của bạn để đảm bảo nơi bạn đang tạo thư mục mà bạn nghĩ nó đang ở đâu.

+0

đường dẫn là:/storage/sdcard0/Tải xuống/thư mục –

0

Hãy dùng thử.

 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(); 
      } 

Dont quên thêm phép trong manifest

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

Hình ảnh được lưu thành công trong Sdcard/XXX/Wallpapers và nếu tôi chạy lại các tệp là! = Null và không có trong khối if ... Có vẻ như tất cả đều đúng nhưng trong trình thám hiểm tệp tôi không thấy thư mục và hình ảnh! -.- –

+0

những gì người khác bạn có thể thấy ở đó trong trình khám phá tệp và cũng cố gắng chạy nó trên thiết bị di động của bạn chắc chắn bạn sẽ nhận được nó –

0

Bạn không thể nhìn thấy thư mục/tập tin trong thám hiểm? Có thể vì MediaScanner hoạt động nhưng không thêm tệp của bạn. Bạn có thể làm điều này trong chương trình của bạn hoặc chuyển Media Scanner ở đâu đó trong cài đặt điện thoại của bạn.

MediaScanner

Trigger MediaScanner

0

Dường như có lỗi đã biết trong MTP.

Issue 195362 Tất cả điện thoại sử dụng MTP thay vì USB Ổ đĩa chung không hiển thị đúng danh sách tệp khi điện thoại được kết nối với máy tính bằng cáp USB. Các ứng dụng Android chạy trên thiết bị cũng không thể xem các tệp này.

Nó thực sự cũ như 2012

Các vấn đề liên quan