데이터 저장소의 파일 저장소 - 첫 번째 줄 코드 안드로이드 학습 노트
안드로이드 시스템은 주로 데이터 지속화 기능을 간단하게 실현하는 세 가지 방식을 제공했다. 즉, 파일 저장,Shared Preference 저장과 데이터베이스 저장이다.물론 이 세 가지 방식을 제외하고는 휴대전화의SD카드에 데이터를 저장할 수 있다.
2. 파일 저장소
파일 저장은 저장된 내용을 어떠한 포맷 처리도 하지 않고 모든 데이터를 파일에 고스란히 저장하기 때문에 간단한 텍스트 데이터나 이진 데이터를 저장하는 데 비교적 적합하다.
1.
파일에 데이터 저장
openFileOutput () 방법으로 데이터를 지정한 파일에 저장할 수 있습니다.두 개의 매개변수를 수신합니다.
첫 번째 파라미터는 파일 이름입니다. 모든 파일은/data/data/
activity_main.xml에는 텍스트 내용을 입력하기 위해 레이아웃에 EditText가 추가되었습니다.
<LinearLayout 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" >
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint=" "/>
</LinearLayout>
MainActivity:
<span style="font-weight: normal;">package com.example.filepersistencetest;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit=(EditText)findViewById(R.id.edit);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
String inputText=edit.getText().toString();
save(inputText);
}
public void save(String inputText){
FileOutputStream out = null;
BufferedWriter writer = null;
try{
out=openFileOutput("data", Context.MODE_PRIVATE);
writer= new BufferedWriter(new OutputStreamWriter(out));
writer.write(inputText);
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(writer!=null){
writer.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}</span>
우선 OnCreate () 방법에서 EditText의 실례를 얻은 다음에 OnDestroy () 방법을 다시 썼습니다. 그러면 활동이 소각되기 전에 반드시 이 방법을 사용할 수 있습니다.onDestroy () 방법에서 EditText에서 입력한 내용을 가져오고save () 방법을 사용해서 입력한 내용을 파일에 저장합니다. 파일은 데이터라고 명명됩니다.
save ()에서 OpenFile Output () 방법을 통해 File Output Stream 대상을 얻은 다음 그것을 빌려 Output Stream Writer 대상을 구축한 다음 Output Stream Writer를 사용하여 Buffered Writer 대상을 구축하면 Buffered Writer를 통해 텍스트 내용을 파일에 쓸 수 있습니다.
DDMS 보기로 전환하고 FileExplorer 전환 카드를 누르면/data/data/com에 들어갑니다.example.persistencetest/files/디렉터리에서 데이터 파일이 생성된 것을 볼 수 있습니다.
2. 파일에서 데이터를 읽는 openFileInput() 방법은 파일에서 데이터를 읽는 데 사용됩니다.읽을 파일 이름만 수신한 다음/data/data/
<span style="font-weight: normal;"> protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit=(EditText)findViewById(R.id.edit);
String inputText=load();
if(!TextUtils.isEmpty(inputText)){
edit.setText(inputText);
edit.setSelection(inputText.length());
Toast.makeText(this, "Restoring succeeded", Toast.LENGTH_SHORT).show();
}
}</span>
<span style="font-weight: normal;"> public String load() {
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in= openFileInput("data");
reader= new BufferedReader(new InputStreamReader(in));
String line = "";
while((line=reader.readLine())!=null){
content.append(line);
}
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}finally{
if(reader!=null){
try {
reader.close();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
return content.toString();
}</span>
onCreate () 방법에서load () 방법을 사용하여 파일에 저장된 텍스트 내용을 읽습니다. 읽은 내용이 비어 있지 않으면 EditText의 setText () 방법을 사용해서 EditText에 내용을 채우고 setSelection 방법을 사용해서 입력 커서를 텍스트의 끝 위치로 이동해서 계속 입력하고 팝업합니다.
복원에 성공한 힌트
load () 방법에서 먼저 OpenFile Input () 방법으로 File Input Stream 대상을 얻은 다음에 이를 빌려 Input Stream Reader 대상을 구축한 다음에 Input Stream Reader를 사용하여 Buffered Reader 대상을 구축하면 Buffered Reader를 통해 한 줄 한 줄 읽을 수 있습니다.파일의 모든 텍스트 내용을 읽고 StringBuilder 대상에 저장합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite의 query로 망설임이것은 내가 처음 안드로이드 응용 프로그램 개발에서 망설이고, 그 후 해결 된 방법을 비망록으로 철자하고 있습니다. java에서 SQLite를 이용한 애플리케이션을 작성하는 동안 EditText에 입력된 item이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.