2010-04-12 25 views
11

Xin lỗi cho danh hiệu mơ hồ nhưng tôi làm như sau để viết một chuỗi đơn giản vào một tệp:Không thể ghi vào thẻ SD - canWrite được trả về false

try { 
     File root = Environment.getExternalStorageDirectory(); 
     if (root.canWrite()){ 
      System.out.println("Can write."); 
      File def_file = new File(root, "default.txt"); 
      FileWriter fw = new FileWriter(def_file); 
      BufferedWriter out = new BufferedWriter(fw); 
      String defbuf = "default"; 
      out.write(defbuf); 
      out.flush(); 
      out.close(); 
     } 
     else 
      System.out.println("Can't write."); 
}catch (IOException e) { 
     e.printStackTrace(); 
} 

Nhưng root.canWrite() dường như được trở về mọi sai . Tôi không chạy điều này của một trình giả lập, tôi có Eris android của tôi cắm vào máy tính của tôi thông qua USB và chạy các ứng dụng tắt của điện thoại của tôi thông qua Eclipse. Có cách nào cho phép ứng dụng của tôi để điều này không xảy ra không?

Ngoài ra, mã này có vẻ là tạo tệp default.txt nhưng nếu nó đã tồn tại, nó sẽ bỏ qua việc tạo và chỉ cần mở nó để viết hoặc tôi phải bắt một cái gì đó như FileAlreadyExists (nếu có ngoại lệ như vậy) sau đó chỉ cần mở nó và viết?

Cảm ơn mọi người trợ giúp.

Trả lời

17

Có cách nào cho phép ứng dụng của tôi cho phép điều này không xảy ra không?

Bạn cần có sự cho phép WRITE_EXTERNAL_STORAGE.

Bạn cũng cần phải không có thẻ SD được gắn trên máy phát triển của mình - máy tính hoặc điện thoại có thể truy cập thẻ SD, nhưng không được cả hai cùng một lúc.

+0

tôi unmout điện thoại từ máy tính , nhưng vẫn nhận được lỗi, tôi đã thêm sự cho phép ** WRITE_EXTERNAL_STORAGE ** trong tệp AndroidManifest.xml, cảm ơn trước. – twlkyao

0

add phép WRITE_EXTERNAL_STORAGE đến file manifest của bạn

và nếu nó là cần thiết thực hiện như sau

  1. cắm droid vào máy tính của bạn
  2. kéo xuống người quản lý (thanh trên cùng với thời gian , xin lỗi, không biết tên, không thể gọi lại ngay bây giờ)
  3. nhấn "usb connected"
  4. cửa sổ bật lên trên máy tính của bạn cho bạn thấy nội dung của S thẻ D
  5. hit "tắt lưu trữ usb" khi bạn đã hoàn tất
  6. cáp ngắt kết nối usb (nếu bạn muốn) và sau đó Droid của bạn có thể đọc thẻ SD nữa
Các vấn đề liên quan