android I/0 스 트림 작업 파일(파일 저장)

파일 저장 소
파일 저장 방식 은 형식 에 제한 을 받 지 않 고 일부 데 이 터 를 직접 파일 형식 으로 장치 에 저장 할 수 있 습 니 다.예 를 들 어 텍스트 파일,PDF,오디 오,그림 등 입 니 다.형식 이 복잡 한 데 이 터 를 저장 할 때 보통 파일 로 저장 합 니 다.자바 가 완전한 I/를 제공 합 니 다.О흐름 체계,통과 I/О스 트림 은 디스크 에 있 는 파일 에 매우 편리 하 게 접근 할 수 있 으 며,마찬가지 로 안 드 로 이 드 도 휴대 전화 등 모 바 일 장치 에 저 장 된 파일 에 접근 하 는 I/O 스 트림 방식 을 지원 한다.
I/0 스 트림 작업 파일
진행 I/О스 트림 파일 을 조작 할 때 파일 의 전송 흐름 과 출력 흐름 을 먼저 가 져 와 야 합 니 다.Android 응용 프로그램 에 서 는 컨 텍스트 환경 Context 대상 이 제공 하 는 openFileInput()과 openFileOuput()두 가지 방법 으로 각각 파일 의 입력 흐름 과 출력 흐름 을 얻 을 수 있 습 니 다.이 두 가지 방법 에 대한 구체 적 인 소 개 는 다음 과 같 습 니 다.
  • FilelnputStream openFileInput(String name):장치 의 파일 을 읽 을 수 있 도록 프로그램의 데이터 폴 더 에서 name 파일 이름 을 지정 한 표준 파일 입력 흐름 을 가 져 옵 니 다.
  • FileOutputStream openFileOuput(String name,int mode):프로그램의 데이터 폴 더 에서 name 파일 이름 을 지정 하 는 표준 파일 출력 흐름 을 가 져 와 장치 의 파일 에 데 이 터 를 기록 할 수 있 습 니 다.
  • 그 중에서 openFileOutput()방법의 두 번 째 매개 변수 mode 는 출력 흐름 을 지정 하 는 모드,즉 파일 을 열 어 조작 하 는 모드 입 니 다.Context 클래스 에서 4 개의 정적 상수 가 서로 다른 출력 모드 를 나타 내 는 데 사 용 됩 니 다.다음 표 와 같 습 니 다.
    4 가지 파일 읽 기와 쓰기 모드
    패턴
    기능 설명
    Context.MODE_PRIVATE
    개인 모드 입 니 다.이 모드 에서 만 든 파일 은 모두 개인 파일 로 응용 자체 에 만 접근 할 수 있 습 니 다.따라서 이 모드 에서 기 록 된 내용 은 원래 파일 의 내용 을 덮어 씁 니 다.
    Context. MODE_APPEND
    추가 모드 입 니 다.이 모드 는 먼저 파일 이 존재 하 는 지 확인 하고 파일 이 존재 하지 않 으 면 새 파일 을 만 듭 니 다.파일 이 존재 하면 원본 파일 의 끝 에 내용 을 추가 합 니 다.
    Context.MODE_WORLD_READABLE
    읽 기 가능 모드 입 니 다.이 모드 의 파일 은 다른 프로그램 에서 읽 을 수 있 습 니 다.
    Context.MODE_WORLD_WRITABLE
    쓰기 가능 모드,이 모드 의 파일 은 다른 프로그램 에서 읽 고 쓸 수 있 습 니 다.
    이 밖 에 Context 컨 텍스트 대상 은 응용 프로그램의 데이터 폴 더 에 접근 하 는 방법 도 제공 했다.다음 표 와 같다.
    데이터 폴 더 에 접근 하 는 방법
    방법.
    기능 설명
    File getDir(String name, int mode)
    응용 프로그램의 데이터 폴 더 에서 name 에 대응 하 는 하위 디 렉 터 리 를 가 져 오 거나 만 듭 니 다.
    File getFilesDir()
    프로그램의 데이터 폴 더 를 가 져 오 는 절대 경로
    String[] fileList()
    프로그램의 데이터 폴 더 에 있 는 모든 파일 을 되 돌려 줍 니 다.
    boolean deleteFile( String name)
    프로그램의 데이터 폴 더 에 지정 한 파일 을 삭제 합 니 다.
    다음은 코드 를 통 해 I/O 흐름 을 사용 하여 파일 을 읽 고 쓰 는 방법 을 보 여 줍 니 다.
    xml 레이아웃 파일 만 들 기
    在这里插入图片描述
    在这里插入图片描述
    xml 레이아웃 코드 는 다음 과 같 습 니 다.
    
    <?xml version="1.0" encoding="utf-8"?>
    <!--     ,          ,       -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <!--      ,          ,      ,          -->
        <EditText
            android:id="@+id/ediFileOut"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:lines="4"/>
        <!--       ,  ,      ,      -->
        <Button
            android:id="@+id/btnWrite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="    "/>
        <!--      ,          ,      ,       ,    ,   4-->
        <EditText
            android:id="@+id/editFileIn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:cursorVisible="false"
            android:editable="false"
            android:lines="4"/>
        <!--         ,      ,      -->
        <Button
            android:id="@+id/btnRead"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="    "/>
    </LinearLayout>
    
    상기 인터페이스 레이아웃 은 비교적 간단 합 니 다.두 개의 텍스트 상자 와 두 개의 단추 만 포함 하고 각각 파일 저장 과 파일 읽 기 두 가지 작업 에 사 용 됩 니 다.
    이어서 Activity 프로그램 만 들 기
    在这里插入图片描述
    在这里插入图片描述
    activity 코드 는 다음 과 같 습 니 다.
    
    package com.example.wenjiancuncu;
    import android.content.Context;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.PrintStream;
    public class FileIOActivity extends AppCompatActivity {
        private EditText editFileIn, editFileOut; //       
        private Button btnRead, btnWrite; //      
        final String FILE_NAME = "qstIO.txt"; //     
        @Override //      
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); //      
            setContentView(R.layout.activity_file_io); //    
            //       
            editFileIn = (EditText) findViewById(R.id.editFileIn);
            editFileOut = (EditText) findViewById(R.id.ediFileOut);
            //      
            Button btnRead = (Button) findViewById(R.id.btnRead);
            Button btnWrite = (Button) findViewById(R.id.btnWrite);
            //         btnRead        
            btnRead.setOnClickListener(new View.OnClickListener() {
                @Override //      
                public void onClick(View v) {
                    //          ,  editFileIn        
                    editFileIn.setText(read());
                }
            });
            //         btnWrite        
            btnWrite.setOnClickListener(new View.OnClickListener() {
                @Override //      
                public void onClick(View v) {
                    write(editFileOut.getText().toString()); // editFileOut         
                    editFileOut.setText(""); //  editFileOut       
                }
            });
        }
        private String read() {
            try {
                FileInputStream fis = openFileInput(FILE_NAME); //       
                byte[] buff = new byte[1024]; //          
                int hasRead = 0;
                StringBuilder sb = new StringBuilder(""); //       
                //      
                while ((hasRead = fis.read(buff)) > 0) {
                    //                     
                    sb.append(new String(buff, 0, hasRead));
                }
                fis.close(); //       
                return sb.toString(); //       
            }catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
        private void write(String content) {
            try {
                //            
                FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_APPEND);
                PrintStream ps = new PrintStream(fos); // FileOutStream   PrintStream
                ps.println(content); //      
                ps.close(); //       
                //  Toast      
                Toast.makeText(FileIOActivity.this,"    ", Toast.LENGTH_LONG).show();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    상기 코드 의 핵심 작업 은 파일 의 저장 과 읽 기 입 니 다.그 중에서 read()와 write()두 가지 방법 은 각각 파일 읽 기와 쓰기 작업 에 사 용 됩 니 다.코드 에 서 는 btnRead 와 btnWrite 단 추 를 각각 이벤트 모니터 로 설정 하고 이벤트 처리 방법 에서 해당 하 는 read()또는 write()방법 으로 파일 을 읽 거나 저장 합 니 다.
    AndroidMainfest 에서 Activity 를 설명 합 니 다.
    在这里插入图片描述
    실행 결과
    在这里插入图片描述
    Android 응용 프로그램의 데이터 파일 은 기본적으로/data/data/패키지 이름/files 디 렉 터 리 에 저 장 됩 니 다.AndroidDevice Monitor 의 File Explorer 옵션 에서/data/data/com.패키지 이름/files 디 렉 터 리 를 펼 치면 다음 그림 과 같이 저 장 된 qstIO.txt 데이터 파일 을 볼 수 있 습 니 다.
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    총결산
    위 챗 데모 에 관 한 이 글 은 여기까지 입 니 다.저희 의 더 많은 멋 진 내용 에 관심 을 가 져 주 셨 으 면 좋 겠 습 니 다!

    좋은 웹페이지 즐겨찾기