5/5 - (3 votes) Cách làm của Google khá rối rắm nhưng kể ra thì cũng tiện. Show Khái quát bộ nhớ AndroidInternal là gì?Internal chỉ có 1 loại duy nhất là nó lưu vào trong tên miền của app, những app khác không đọc được. Nó sẽ bị xoá hết khi người dùng xoá app. Ví dụ: /data/user/0/jp.co.abc/files/test.txt External là gì?External có 2 loại chính và phụ (private & public external)
Bộ nhớ ngoài này họ Android đã tạo sẵn cho chúng ta các loại thư mục này, vì vậy chúng ta có thể dùng luôn mà không cần tạo mới. Tóm lạiInternal và External là 2 từ khoá ám chỉ trong và ngoài app chứ không phải trong và ngoài bộ nhớ của điện thoại (lấy hệ quy chiếu là App không phải điện thoại). Thực hành và kiểm traTạo sub thư mục trong bộ nhớ internalKhi gọi thư mục files/ trong bộ nhớ trong của app dùng hàm: getFilesDir() Lưu ý: Nếu ta tạo thư mục bằng getDir() thì Androidd SDK nó tự tạo prefix là app_ File mydir = getDefaultContext().getDir("test_folder", Context.MODE_PRIVATE); if (!mydir.exists()) { boolean daTao = mydir.mkdirs(); }Nhưng mình nghĩ dùng trong phạm vi thư mục files/ là đủ rồi. Do vậy từ giờ các cách tạo bên dưới mình sẽ làm việc trong thư mục files/ Tạo 1 file trong bộ nhớ internal cách 1File subDir = new File(getDefaultContext().getFilesDir(), "subDir"); if (!subDir.exists()) { subDir.mkdir(); } try { File fileTxt = new File(subDir, "test.json"); FileWriter writer = new FileWriter(fileTxt); writer.append("test content"); writer.flush(); writer.close(); } catch (Exception e) { LogI(e.getMessage()); }Đoạn code trên tạo file trong thư mục con subDir, nếu muốn tạo ngay thư mục files thì chỉ cần gọi getDefaultContext().getFilesDir() hoặc làm theo cách 2 bên dưới. Tạo 1 file trong bộ nhớ internal cách 2 (ngay trong thư mục files)String fileName = "tesst.txt"; String content = "log content"; FileOutputStream outputStream; try { outputStream = getDefaultContext().openFileOutput(fileName, Context.MODE_PRIVATE); outputStream.write(content.getBytes()); outputStream.close(); } catch (Exception e) { e.printStackTrace(); }Hàm test nhanh:public static void testPath() { LogI("bo nho trong app getFilesDir(): " + getDefaultContext().getFilesDir()); LogI("bo nho ngoai app - private getExternalFilesDir: " + getDefaultContext().getExternalFilesDir(null).getAbsolutePath()); LogI("bo nho ngoai app - public Environment.getExternalStorageDirectory(): " + Environment.getExternalStorageDirectory()); }Tham khảo thêm: https://stackoverflow.com/questions/10123812/diff-between-getexternalfilesdir-and-getexternalstoragedirectory NHÌN TỔNG THỂ HƠN VỀ CẢBỘ NHỚ EXTERNAL CỦA ĐIỆN THOẠI & APPHình dưới đây bao gồm cả bộ nhớ ngoài của điện thoại nữa nên bạn có thể tham khảo. Đây là ví dụ thực tế khi chúng tôi làm dự án. TẢI FILE EXCEL TẠI ĐÂYCác bài viết không xem thì tiếc:
|