2011-12-06 38 views
9

Sau khi tìm kiếm 1 giờ tôi không tìm thấy giải pháp nào cho vấn đề của mình.Sao chép tập tin vào thư mục tài sản

tôi muốn chuyển một file từ sdcard vào thư mục tài sản và cũng ghi đè lên file hiện có trong thư mục tài sản (cả hai tập tin là cơ sở dữ liệu SQLite có cùng tên với chỉ một sự khác biệt nhỏ trong dữ liệu)

?? thư mục

+8

Bạn chỉ đơn giản là không thể loại bỏ hoặc thêm bất cứ điều gì từ/vào thư mục tài sản tại thời gian chạy. – Mudassir

+1

tôi muốn tải xuống cơ sở dữ liệu sqlite từ máy chủ và sau đó sao chép vào thư mục tài sản. –

+0

Tôi có thể khắc phục tình trạng này bằng cách nào? –

Trả lời

11

Trên thực tế, Hành vi của các tập tin .apk android được đọc chỉ nên Cấu trúc thư mục nằm trong tệp APK đó giống nhau, Vì vậy, không ai có thể ghi tệp này hoặc thực hiện thay đổi trên đó khi chạy, đó là lý do tại sao Bạn không thể thực hiện thay đổi trong /asset folder khi chạy. bạn có thể đọc tập tin từ nó (có nghĩa là sao chép các file đó có sẵn trong tài sản đối với bất kỳ internal storage hoặc /sdcardnhưng không ghi nó vào ngược lại)

nó áp dụng trên tất cả các thư mục được xây dựng trong các tập tin .apk. Theo tài liệu.

+0

xin lỗi bình luận nhưng tôi cần giải pháp :) Tôi có cơ sở dữ liệu trong thư mục tài sản và trên máy chủ bây giờ tôi muốn thay đổi cơ sở dữ liệu sau này trên máy chủ để người dùng có thể cập nhật mới nhất. Tôi có thể làm điều này như thế nào? Người dùng sẽ nhận được cơ sở dữ liệu đó như thế nào? - john smith 7 giây trước –

+0

Bạn phải viết cơ sở dữ liệu đó cho bộ nhớ trong hoặc trong sdcard, (Bộ nhớ trong thích hợp hơn) .. – user370305

+0

bạn có thể hướng dẫn tôi cách thực hiện việc này không? –

4

Tài sản không thể ghi nó chỉ có thể đọc được, do đó bạn không thể sao chép từ sdcard đối với tài sản, có bạn có thể sao chép từ tài sản để sdcard

+1

Không có downvote. Nhưng tấm áp phích muốn ngược lại. – Mudassir

+0

tôi biết rằng http://stackoverflow.com/questions/4447477/android-how-to-copy-files-in-assets-to-sdcard nhưng vấn đề của tôi thì khác. –

+1

+1 để biết thông tin chính xác. –

1

Nếu bạn muốn các ứng dụng khác không truy cập cơ sở dữ liệu của bạn thì những gì bạn có thể làm là

  1. Tải về cơ sở dữ liệu từ trang web. tạo một cơ sở dữ liệu tạm thời cũng trong thư mục ứng dụng.
  2. getDatabasePath() điều này sẽ cung cấp cho bạn đường dẫn của cơ sở dữ liệu giả mà bạn đã tạo ngay bây giờ thay thế bằng cơ sở dữ liệu bạn đã tải xuống.

PS .: người dùng và các ứng dụng có quyền truy cập root vẫn có thể truy cập vào nó và bạn không thể làm bất cứ điều gì trong kịch bản đó

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