2011-01-23 35 views
5

Mọi thứ đều có trong câu hỏi. Đây là mã của tôi:Cách tạo thư mục trong Android?

private void createDirectory(File currentDirectory) { 
    File f = null; 
    try { 

    f = new File(currentDirectory.getCanonicalPath() + "/directory" 
    + count); 

    boolean success = f.mkdir(); 
    if (!success) { 
    Toast.makeText(currentContext, 
     f.getName() + " could not be created", 15).show(); 

    } 
    } catch (IOException ioe) { 
    Toast.makeText(currentContext, 
    f.getName() + " could not be created", 15).show(); 
    } 

    count++; 
} 

Tôi viết một trình quản lý tệp nhỏ trong Android và tôi muốn thêm khả năng tạo thư mục. Không có ngoại lệ và biến thành công luôn trả về false. Ai đó có thể cho tôi biết mã của tôi có sai không?

Thx cho lời khuyên của bạn !!

[EDIT]

BTW, Khi điện thoại đang ở chế độ Developpement, không một ứng dụng có truy cập ghi trên sdcard? Tôi đang lập trình trên điện thoại của tôi (Acer lỏng)

Trả lời

11

Bạn phải bổ sung giấy phép này:

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

Bằng cách này, không chắc chắn làm thế nào bạn đang nhận được thư mục SDcard ... nhưng nó phải được theo cách này:

File sdDir = Environment.getExternalStorageDirectory(); 

Điều quan trọng là , bởi vì một số lập trình viên sử dụng để nghĩ rằng SDCard luôn là/sdcard, nhưng nó có thể thay đổi.

+0

Vâng, tôi biết. Nhưng đây là cách tôi nhận được nó. Cảm ơn câu trả lời của bạn – Dimitri

+0

Chỉ cần một người đứng đầu cho những người tumble thread này, bắt đầu từ API cấp 19 (KitKat), 'WRITE_EXTERNAL_STORAGE' cho phép là không cần thiết cho việc sử dụng thư mục lưu trữ bên ngoài. – tekina

2

Bạn sẽ cần thêm

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

đến file manifest của bạn để cho Android để yêu cầu người dùng cho ứng dụng của bạn để được phép.

2

Trước tiên, hãy sử dụng công cụ xây dựng File có số File cho thư mục của bạn và String cho thư mục con bạn muốn.

Ngoài ra, rất có thể bạn đang cố gắng để tạo ra một thư mục mà bạn không được phép, hoặc vì:

  • currentDirectory không tồn tại, hoặc
  • currentDirectory điểm đến một nơi trên bảng trên lưu trữ flash, nơi bạn không được phép để viết, hoặc
  • currentDirectory điểm đến một nơi trên bộ nhớ ngoài và bạn thiếu WRITE_EXTERNAL_STORAGE phép
0

thay vì boolean success = f.mkdir(); sử dụng

boolean success = f.mkdirs(); 

rằng giải quyết vấn đề của tôi (tôi sử dụng mã tham khảo giống như bạn và có cùng một vấn đề).

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