2011-02-07 35 views
41

Tôi không thể hiểu tại sao câu trả lời cho câu hỏi này không có trong tài liệu dành cho nhà phát triển Android; Tôi thấy họ luôn bực mình.Đường dẫn hệ thống tệp nào được sử dụng bởi Context.openFileOutput() của Android?

Mở phương thức openFileOutput() trên lớp Ngữ cảnh để mở tệp để ghi, đường dẫn tệp lưu trữ nội bộ nào ghi vào?

http://developer.android.com/reference/android/content/Context.html

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

+2

dữ liệu 'dữ liệu> id ứng dụng của bạn> tệp' – YumYumYum

+2

điện thoại cần được bắt nguồn để xem '/ data/data' – tchelidze

Trả lời

53

Mở phương thức openFileOutput() trên lớp Ngữ cảnh để mở tệp để ghi, đường dẫn tệp lưu trữ nội bộ ghi vào?

Nó trỏ đến vị trí số getFilesDir() trên số Context trả về. Bạn có thể nói điều này vì tài liệu nói:

Trả về đường dẫn tuyệt đối tới thư mục trên hệ thống tệp nơi tệp được tạo bằng openFileOutput (Chuỗi, int) được lưu trữ.

+1

Tôi muốn các tài liệu rõ ràng rằng vị trí có thể di chuyển và sử dụng phương pháp nào để tìm vị trí (ví dụ: thêm getFilesDir() vào phần Xem thêm). Cảm ơn nhiều Mark, đánh giá cao sự giúp đỡ của bạn. –

+1

@Ollie C: Vâng, thật kỳ lạ khi tham khảo chéo không có ở đó. Và một trong những nhược điểm của việc có những thứ được kế thừa trên mỗi trang (ví dụ, 'openFileOutput()' trong mỗi lớp con 'Context' là Javadoc) là việc tìm kiếm trở nên hơi đau đớn hơn. – CommonsWare

+0

@CommonsWare, tôi là một newbie và điều này có vẻ là một câu hỏi ngây thơ nhưng nó có liên quan đến chủ đề này: Khi tôi đang cố gắng lưu tệp vào bộ nhớ ngoài của tôi bằng cách sử dụng context.openFileOutput (this.fileName, Context.MODE_APPEND) phương thức không ném bất kỳ ngoại lệ nào và thực hiện bình thường và Context.getFilesDir() trả về: /data/data/com.proj.myproject/files. nhưng khi tôi kiểm tra bộ nhớ ngoài của điện thoại và đi đến/Dữ liệu thì nó trống. Tôi cũng đã thêm quyền WRITE_EXTERNAL_STORAGE trong tệp kê khai. Ở đâu nó có thể được lưu tập tin sau đó? Cảm ơn bạn đã giúp đỡ! – powernit

1

Tập tin này được ghi vào một đường dẫn tương đối để ứng dụng của bạn trong các thiết bị bộ nhớ. Bạn có thể với ddms xem tại vị trí, nhưng khi bạn đang sử dụng Context.openFileOutput() này, bạn không nên quan tâm đến bất kỳ đường dẫn tuyệt đối nào.

Nếu bạn muốn chuyển tên tệp xung quanh, bạn nên cân nhắc sử dụng external storage.

16

Trong DDMS, tôi thấy tập tin của tôi dưới:

data > data > your app id > files 
+1

thư mục dữ liệu của tôi luôn trống, bất kỳ ý tưởng nào tôi có thể bị thiếu? – Vituel

+0

có thể điện thoại của bạn có nhiều kho lưu trữ, nhiều điện thoại có dung lượng lưu trữ nội bộ là "sd0" (tùy thuộc vào sản phẩm của bạn, một số có thể chọn tên khác), đồng thời cho phép bạn chèn bộ nhớ ngoài như thẻ SD sẽ được gọi là "sd1", bạn sẽ phải chọn bộ nhớ phù hợp trước khi tìm kiếm dữ liệu ứng dụng của mình. –

+3

Điện thoại của bạn cần phải được root. Orelse thư mục dữ liệu sẽ hiển thị trống. –

0

Bạn có thể lấy mà đường dẫn tập tin bằng cách gọi Context#getFileStreamPath(String):

Trả về đường dẫn tuyệt đối trên hệ thống tập tin nơi một tập tin được tạo ra với openFileOutput(String, int) được lưu trữ.

Và sau đó File#getAbsolutePath().

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