- Android - Intents/Filters
- Android - Fragments
- Android - Content Providers
- Android - Broadcast Receivers
- Android - Services
- Android - Activities
- Android - Resources
- Android - Hello World Example
- Android - Application Components
- Android - Architecture
- Android - Environment Setup
- Android - Overview
- Android - Home
Android - User Interface
- Android - Custom Components
- Android - Styles and Themes
- Android - Event Handling
- Android - UI Controls
- Android - UI Layouts
Android Advanced Concepts
- Publishing Android Application
- Android - Phone Calls
- Android - Sending SMS
- Android - Sending Email
- Location Based Services
- Android - Notifications
- Android - Drag and Drop
Android Useful Examples
- Android - XML Parsers
- Android - Widgets
- Android - Wi-Fi
- Android - WebView Layout
- Android - UI Testing
- Android - UI Patterns
- Android - UI Design
- Android - Twitter Integration
- Android - TextureView
- Android - Text to Speech
- Android - Testing
- Android - Support Library
- Android - SQLite Database
- Android - Spelling Checker
- Android - SIP Protocol
- Android - Shared Preferences
- Android - Session Management
- Android - Sensors
- Android - SDK Manager
- Android - Screen Cast
- Android - RSS Reader
- Android - RenderScript
- Android - Push Notification
- Android - ProgressBar
- Android - Progress Circle
- Android - PHP/MySQL
- Android - NFC Guide
- Android - Network Connection
- Android - Navigation
- Android - Multitouch
- Android - MediaPlayer
- Android - Login Screen
- Android - Localization
- Android - Loading Spinner
- Android - Linkedin Integration
- Android - JSON Parser
- Android - JetPlayer
- Android - Internal Storage
- Android - ImageSwitcher
- Android - Image Effects
- Android - Google Maps
- Android - Gestures
- Android - Facebook Integration
- Android - Emulator
- Android - Developer Tools
- Android - Data Backup
- Android - Custom Fonts
- Android - Clipboard
- Android - Camera
- Android - Bluetooth
- Android - Best Practices
- Android - Auto Complete
- Android - AudioManager
- Android - Audio Capture
- Android - Animations
- Android - Alert Dialoges
Android Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Android - Internal Storage
Android provides many kinds of storage for apppcations to store their data. These storage places are shared preferences, internal and external storage, SQLite storage, and storage via network connection.
In this chapter we are going to look at the internal storage. Internal storage is the storage of the private data on the device memory.
By default these files are private and are accessed by only your apppcation and get deleted , when user delete your apppcation.
Writing file
In order to use internal storage to write some data in the file, call the openFileOutput() method with the name of the file and the mode. The mode could be private , pubpc e.t.c. Its syntax is given below −
FileOutputStream fOut = openFileOutput("file name here",MODE_WORLD_READABLE);
The method openFileOutput() returns an instance of FileOutputStream. So you receive it in the object of FileInputStream. After that you can call write method to write data on the file. Its syntax is given below −
String str = "data"; fOut.write(str.getBytes()); fOut.close();
Reading file
In order to read from the file you just created , call the openFileInput() method with the name of the file. It returns an instance of FileInputStream. Its syntax is given below −
FileInputStream fin = openFileInput(file);
After that, you can call read method to read one character at a time from the file and then you can print it. Its syntax is given below −
int c; String temp=""; while( (c = fin.read()) != -1){ temp = temp + Character.toString((char)c); } //string temp contains all the data of the file. fin.close();
Apart from the the methods of write and close, there are other methods provided by the FileOutputStream class for better writing files. These methods are psted below −
Sr.No | Method & description |
---|---|
1 |
FileOutputStream(File file, boolean append) This method constructs a new FileOutputStream that writes to file. |
2 |
getChannel() This method returns a write-only FileChannel that shares its position with this stream |
3 |
getFD() This method returns the underlying file descriptor |
4 |
write(byte[] buffer, int byteOffset, int byteCount) This method Writes count bytes from the byte array buffer starting at position offset to this stream |
Apart from the the methods of read and close, there are other methods provided by the FileInputStream class for better reading files. These methods are psted below −
Sr.No | Method & description |
---|---|
1 |
available() This method returns an estimated number of bytes that can be read or skipped without blocking for more input |
2 |
getChannel() This method returns a read-only FileChannel that shares its position with this stream |
3 |
getFD() This method returns the underlying file descriptor |
4 |
read(byte[] buffer, int byteOffset, int byteCount) This method reads at most length bytes from this stream and stores them in the byte array b starting at offset |
Example
Here is an example demonstrating the use of internal storage to store and read files. It creates a basic storage apppcation that allows you to read and write from internal storage.
To experiment with this example, you can run this on an actual device or in an emulator.
Steps | Description |
---|---|
1 | You will use Android Studio IDE to create an Android apppcation under a package com.example.sairamkrishna.myapppcation. |
2 | Modify src/MainActivity.java file to add necessary code. |
3 | Modify the res/layout/activity_main to add respective XML components |
4 | Run the apppcation and choose a running android device and install the apppcation on it and verify the results |
Following is the content of the modified main activity file src/MainActivity.java.
package com.example.sairamkrishna.myapppcation; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.io.FileInputStream; import java.io.FileOutputStream; pubpc class MainActivity extends Activity { Button b1,b2; TextView tv; EditText ed1; String data; private String file = "mydata"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button)findViewById(R.id.button); b2=(Button)findViewById(R.id.button2); ed1=(EditText)findViewById(R.id.editText); tv=(TextView)findViewById(R.id.textView2); b1.setOnCpckListener(new View.OnCpckListener() { @Override pubpc void onCpck(View v) { data=ed1.getText().toString(); try { FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE); fOut.write(data.getBytes()); fOut.close(); Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); b2.setOnCpckListener(new View.OnCpckListener() { @Override pubpc void onCpck(View v) { try { FileInputStream fin = openFileInput(file); int c; String temp=""; while( (c = fin.read()) != -1){ temp = temp + Character.toString((char)c); } tv.setText(temp); Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show(); } catch(Exception e){ } } }); } }
Following is the modified content of the xml res/layout/activity_main.xml.
In the following code abc indicates the logo of tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="Internal storage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview" android:textSize="35dp" android:layout_apgnParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point" android:id="@+id/textView" android:layout_below="@+id/textview" android:layout_centerHorizontal="true" android:textColor="#ff7aff24" android:textSize="35dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save" android:id="@+id/button" android:layout_apgnParentBottom="true" android:layout_apgnLeft="@+id/textView" android:layout_apgnStart="@+id/textView" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:hint="Enter Text" android:focusable="true" android:textColorHighpght="#ff7eff15" android:textColorHint="#ffff25e6" android:layout_below="@+id/imageView" android:layout_apgnRight="@+id/textView" android:layout_apgnEnd="@+id/textView" android:layout_marginTop="42dp" android:layout_apgnLeft="@+id/imageView" android:layout_apgnStart="@+id/imageView" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:src="@drawable/abc" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="load" android:id="@+id/button2" android:layout_apgnTop="@+id/button" android:layout_apgnRight="@+id/editText" android:layout_apgnEnd="@+id/editText" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Read" android:id="@+id/textView2" android:layout_below="@+id/editText" android:layout_toLeftOf="@+id/button2" android:layout_toStartOf="@+id/button2" android:textColor="#ff5bff1f" android:textSize="25dp" /> </RelativeLayout>
Following is the content of the res/values/string.xml.
<resources> <string name="app_name">My Apppcation</string> </resources>
Following is the content of AndroidManifest.xml file.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sairamkrishna.myapppcation" > <apppcation android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </apppcation> </manifest>
Let s try to run our Storage apppcation we just modified. I assume you had created your AVD while doing environment setup. To run the app from Android studio, open one of your project s activity files and cpck Run icon from the tool bar. Android studio installs the app on your AVD and starts it and if everything is fine with your set-up and apppcation, it will display following Emulator window −
Now what you need to do is to enter any text in the field. For example , i have entered some text. Press the save button. The following notification would appear in you AVD −
Now when you press the load button, the apppcation will read the file , and display the data. In case of our, following data would be returned −
Note you can actually view this file by switching to DDMS tab. In DDMS , select file explorer and navigate this path.
tools>android>android device Monitor
This has also been shown in the image below.
Advertisements