Android-내부 저장소

Android는 애플리케이션이 데이터를 저장할 수 있도록 다양한 종류의 저장소를 제공합니다. 이러한 저장 장소는 공유 기본 설정, 내부 및 외부 저장소, SQLite 저장소 및 네트워크 연결을 통한 저장소입니다.

이 장에서는 내부 저장소에 대해 살펴 보겠습니다. 내부 저장소는 장치 메모리에 개인 데이터를 저장하는 것입니다.

기본적으로 이러한 파일은 비공개이며 애플리케이션에서만 액세스되며 사용자가 애플리케이션을 삭제할 때 삭제됩니다.

파일 쓰기

내부 저장소를 사용하여 파일에 일부 데이터를 쓰려면 파일 이름과 모드로 openFileOutput () 메서드를 호출합니다. 모드는 private, public 등이 될 수 있습니다. 구문은 다음과 같습니다.

FileOutputStream fOut = openFileOutput("file name here",MODE_WORLD_READABLE);

openFileOutput () 메서드는 FileOutputStream의 인스턴스를 반환합니다. 따라서 FileInputStream의 객체에서 수신합니다. 그런 다음 write 메서드를 호출하여 파일에 데이터를 쓸 수 있습니다. 구문은 다음과 같습니다.

String str = "data";
fOut.write(str.getBytes());
fOut.close();

파일 읽기

방금 만든 파일에서 읽으려면 파일 이름으로 openFileInput () 메서드를 호출합니다. FileInputStream의 인스턴스를 반환합니다. 구문은 다음과 같습니다.

FileInputStream fin = openFileInput(file);

그런 다음 read 메서드를 호출하여 파일에서 한 번에 한 문자 씩 읽어서 인쇄 할 수 있습니다. 구문은 다음과 같습니다.

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();

쓰기 및 닫기 방법 외에도에서 제공하는 다른 방법이 있습니다. FileOutputStream더 나은 파일 작성을위한 클래스. 이러한 방법은 다음과 같습니다.

Sr. 아니요 방법 및 설명
1

FileOutputStream(File file, boolean append)

이 메소드는 파일에 쓰는 새로운 FileOutputStream을 생성합니다.

2

getChannel()

이 메서드는이 스트림과 위치를 공유하는 쓰기 전용 FileChannel을 반환합니다.

getFD()

이 메서드는 기본 파일 설명자를 반환합니다.

4

write(byte[] buffer, int byteOffset, int byteCount)

이 메서드는 오프셋 위치에서 시작하는 바이트 배열 버퍼의 count 바이트를이 스트림에 기록합니다.

읽기 및 닫기 방법 외에도에서 제공하는 다른 방법이 있습니다. FileInputStream더 나은 파일 읽기를위한 클래스. 이러한 방법은 다음과 같습니다.

Sr. 아니요 방법 및 설명
1

available()

이 메서드는 추가 입력을 차단하지 않고 읽거나 건너 뛸 수있는 예상 바이트 수를 반환합니다.

2

getChannel()

이 메서드는이 스트림과 위치를 공유하는 읽기 전용 FileChannel을 반환합니다.

getFD()

이 메서드는 기본 파일 설명자를 반환합니다.

4

read(byte[] buffer, int byteOffset, int byteCount)

이 메서드는이 스트림에서 최대 length 바이트를 읽고 오프셋에서 시작하여 바이트 배열 b에 저장합니다.

다음은 파일을 저장하고 읽는 데 내부 저장소를 사용하는 예입니다. 내부 저장소에서 읽고 쓸 수있는 기본 저장소 응용 프로그램을 만듭니다.

이 예제를 실험하기 위해 실제 장치 또는 에뮬레이터에서 실행할 수 있습니다.

단계 기술
1 Android Studio IDE를 사용하여 com.example.sairamkrishna.myapplication 패키지 아래에 Android 애플리케이션을 만듭니다.
2 src / MainActivity.java 파일을 수정하여 필요한 코드를 추가합니다.
res / layout / activity_main을 수정하여 각 XML 구성 요소를 추가하십시오.
4 애플리케이션을 실행하고 실행중인 Android 기기를 선택하고 여기에 애플리케이션을 설치하고 결과를 확인합니다.

다음은 수정 된 주요 활동 파일의 내용입니다. src/MainActivity.java.

package com.example.sairamkrishna.myapplication;

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;

public 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.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(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.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(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){
            }
         }
      });
   }
}

다음은 xml의 수정 된 내용입니다. res/layout/activity_main.xml.

다음 코드에서 abc 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_alignParentTop="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_alignParentBottom="true"
      android:layout_alignLeft="@+id/textView"
      android:layout_alignStart="@+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:textColorHighlight="#ff7eff15"
      android:textColorHint="#ffff25e6"
      android:layout_below="@+id/imageView"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView"
      android:layout_marginTop="42dp"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+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_alignTop="@+id/button"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+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>

다음은의 내용입니다 res/values/string.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

다음은 내용입니다 AndroidManifest.xml 파일.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <application
      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>
      
   </application>
</manifest>

방금 수정 한 스토리지 애플리케이션을 실행 해 보겠습니다. 나는 당신이 당신의AVD환경 설정을하는 동안. Android 스튜디오에서 앱을 실행하려면 프로젝트의 활동 파일 중 하나를 열고

도구 모음에서 실행 아이콘을 클릭 합니다. Android 스튜디오는 AVD에 앱을 설치하고 시작하고 설정 및 애플리케이션에 문제가 없으면 다음 에뮬레이터 창에 표시됩니다.

이제해야 할 일은 필드에 텍스트를 입력하는 것입니다. 예를 들어, 일부 텍스트를 입력했습니다. 저장 버튼을 누릅니다. 다음 알림이 AVD에 표시됩니다.

이제로드 버튼을 누르면 애플리케이션이 파일을 읽고 데이터를 표시합니다. 우리의 경우 다음 데이터가 반환됩니다.

DDMS 탭으로 전환하여 실제로이 파일을 볼 수 있습니다. DDMS에서 파일 탐색기를 선택하고이 경로를 탐색합니다.

tools>android>android device Monitor

이것은 아래 이미지에도 나와 있습니다.