2012-08-02 11 views
22

Tôi muốn lưu ảnh trong Bộ nhớ trong của ứng dụng của tôi, để đặt ở chế độ riêng tư. Vì vậy, tôi đã làm một ít nghiên cứu và thấy 2 cách để có được thư mục.Sự khác nhau giữa getDir và getFilesDir trên Android là gì?

1.With getDir:

File dir = getDir(Environment.DIRECTORY_PICTURES, Context.MODE_PRIVATE); 

2.With getFilesDir:

File dir = getFilesDir(); 

nào là tốt nhất? Trả về vị trí nào trong Bộ nhớ trong?

Cách viết tệp phụ thuộc vào cách bạn nhận được thư mục của mình? Tôi bị mất một chút vì có nhiều cách để ghi tệp trong Android.

Trả lời

28

getFilesDir() trả về đối tượng Tệp cho thư mục riêng tư đối với ứng dụng của bạn. Khi bạn sử dụng openFileOutput(String, int), dữ liệu bạn ghi sẽ được lưu trữ trực tiếp trong thư mục này và không thể truy cập được bằng bất kỳ ứng dụng nào khác. Nó chứa các tệp ứng dụng của bạn.

getDir() cho phép bạn tạo bất kỳ tệp hoặc thư mục nào trong bộ nhớ trong, cũng có thể truy cập được bằng các ứng dụng khác tùy thuộc vào chế độ bạn tạo. openFileOutput(String, int) sẽ không hoạt động với đầu ra của điều này, do đó bạn sẽ phải sử dụng các phương tiện khác để viết và đọc tệp để xử lý thư mục hoặc tệp này. Điều này được sử dụng nhiều hơn để tạo các tệp tùy chỉnh khác với tệp chỉ được ứng dụng của bạn sử dụng.

+0

Cảm ơn! Và không 'File dir = getDir (Environment.DIRECTORY_PICTURES, Context.MODE_PRIVATE);' sẽ cho tôi một 'File' trong bộ nhớ trong (vì' MODE_PRIVATE')? – cleroo

+0

Bạn được chào đón. MODE_PRIVATE là hằng số mặc định cho getDir và nó cho biết tệp/thư mục của bạn sẽ là riêng tư đối với ứng dụng của bạn. getDir sẽ luôn trả về/tạo một thư mục nội bộ. Hãy chú ý rằng DIRECTORY_PICTURES dành cho API 8 trở lên. – Erol

+0

@Erol Vì vậy, tôi có thể kết luận rằng getDir với 'MODE_PRIVATE' giống với getFilesDir theo một cách nào đó ...? –