🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Document Details

FreedFlute

Uploaded by FreedFlute

Tags

android java file storage

Full Transcript

Files and storage Android can read/write files from two locations: – internal and external storage. – Both are persistent storage; data remains after power-off / reboot. internal storage: Built into the device. – guaranteed to be present – typic...

Files and storage Android can read/write files from two locations: – internal and external storage. – Both are persistent storage; data remains after power-off / reboot. internal storage: Built into the device. – guaranteed to be present – typically smaller (~1-4 gb) – can't be expanded or removed – specific and private to each app – wiped out when the app is uninstalled File (link) and Streams (link) java.io.File - Objects that represent a file or directory. – methods: canRead, canWrite, create, delete, exists, getName, getParent, getPath, isFile, isDirectory, lastModified, length, listFiles, mkdir, mkdirs, renameTo java.io.InputStream, OutputStream - Stream objects represent flows of data bytes from/to a source or destination. – Could come from a file, network, database, memory,... – Normally not directly used; they only include low-level methods for reading/writing a byte (character) at a time from the input. – Instead, a stream is often passed as parameter to other objects like java.util.Scanner, java.io.BufferedReader, java.io.PrintStream to do the actual reading / writing. Using internal storage (link) An activity has methods you can call to read/write files: – getFilesDir() - returns internal directory for your app – getCacheDir() - returns a "temp" directory for scrap files – getResources().openRawResource(R.raw.id) - read an input file from res/raw/ – openFileInput("name", mode) - opens a file for reading – openFileOutput("name", mode) - opens a file for writing You can use these to read/write files on the device. – many methods return standard java.io.File objects – some return java.io.InputStream or OutputStream objects, which can be used with standard classes like Scanner, BufferedReader, and PrintStream to read/write files (see Java API) Internal storage example 1 // read a file, and put its contents into a TextView // (assumes hello.txt file exists in res/raw/ directory) Scanner scan = new Scanner( getResources().openRawResource(R.raw.hello)); String allText = ""; // read entire file while (scan.hasNextLine()) { String line = scan.nextLine(); allText += line; } myTextView.setText(allText); scan.close(); Internal storage example 2 // write a short text file to the internal storage PrintStream output = new PrintStream openFileOutput("out.txt", MODE_PRIVATE)); output.println("Hello, world!"); output.println("How are you?"); output.close();... // read the same file, and put its contents into a TextView Scanner scan = new Scanner( openFileInput("out.txt", MODE_PRIVATE)); String allText = ""; // read entire file while (scan.hasNextLine()) { String line = scan.nextLine(); allText += line; } myTextView.setText(allText); scan.close(); External storage external storage: Card that is inserted into the device. (such as a MicroSD card) – can be much larger than internal storage (~8-32 gb) – can be removed or transferred to another device if needed – may not be present, depending on the device – read/writable by other apps and users; not private to your app – not wiped when the app is uninstalled, except in certain cases External storage permission If your app needs to read/write the device's external storage, you must explicitly request permission to do so in your app's AndroidManifest.xml file. – On install, the user will be prompted to confirm your app permissions.... Using external storage Methods to read/write external storage: – getExternalFilesDir("name") - returns "private" external directory for your app with the given name – Environment.getExternalStoragePublicDirectory(name) - returns public directory for common files like photos, music, etc. pass constants for name such as Environment.DIRECTORY_ALARMS, DIRECTORY_DCIM, DIRECTORY_DOWNLOADS, DIRECTORY_MOVIES, DIRECTORY_MUSIC, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES You can use these to read/write files on the external storage. – the above methods return standard java.io.File objects – these can be used with standard classes like Scanner, BufferedReader, and PrintStream to read/write files (see Java API) External storage example // write short data to app-specific external storage File outDir = getExternalFilesDir(null); // root dir File outFile = new File(outDir, "example.txt"); PrintStream output = new PrintStream(outFile); output.println("Hello, world!"); output.close(); // read list of pictures in external storage File picsDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES); for (File file : picsDir.listFiles()) {... } Checking if storage is available public boolean isExternalStorageWritable() { return Environment.MEDIA_MOUNTED.equals( Environment.getExternalStorageState()); } public boolean isExternalStorageReadable() { return isExternalStorageWritable() || Environment.MEDIA_MOUNTED_READ_ONLY.equals( Environment.getExternalStorageState()); } Accessing web data (link) To read data from the web, first request the INTERNET permission in your AndroidManifest.xml: Then you can use the standard java.net.URL class to connect to a file or page at a given URL and read its data: URL url = new URL("http://foobar.com/example.txt"); Scanner scan = new Scanner(url.openStream()); while (scan.hasNextLine()) { String line = scan.nextLine();... }

Use Quizgecko on...
Browser
Browser