ファイルI/O
10332 ワード
アプライアンスに保存=入力、ユーザーまたは他のアプライアンスに転送=出力
Linuxファイルシステムはファイルとディレクトリの権限を設定する必要があります!!
各インストールされたアプリケーションにはLinuxユーザーのID+ディレクトリが割り当てられています.
→各ディレクトリはそのユーザーのみがアクセスできる!!
このような特定のアプリケーションのユーザがアクセスできる領域を内部ストレージと呼ぶ.
外部ストレージ(externalstorage)は、すべてのアプリケーションで使用できます.
★Android Qからセキュリティが強化され、メディアストアからしか外部リポジトリにアクセスできない!
メディア・リポジトリは、外部リポジトリに格納されているファイルを管理するデータベースです.
内部ストレージ(アプリケーション固有のストレージ領域)
:インストールされたアプリケーションが提供するディレクトリ.アプリケーションをインストールすると、/data/data/Aディレクトリが作成されます.
Aアプリケーションはこのディレクトリの所有者(owner)であるため、特別な権限を必要とせずに読み取りと書き込みが可能である.
内部リポジトリには、主に私のアプリケーションに使用されるデータが格納されます.
ex)日記帳アプリには日記の内容などが含まれている
がいぶきおく
:外部リポジトリは、すべてのアプリケーションで共通に使用されます.
外部リポジトリに格納されているファイルにアクセスするには、アプリケーションのリストに権限を明記する必要があります.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
アプリケーションを削除すると、保存するデータや他のアプリケーションにアクセスするデータを保存することもできます.外部リポジトリを使用するには、ユーザーの承認が必要です.
内部リポジトリファイルの読み込み
★ファイルの読み込みに使用するAPIは、テキストファイルによって異なりますので、ファイルのフォーマットを知る必要があります
1.ファイルの使用
まず、
val file= File("경로")
もう1つの方法は、ファイルのパスとファイル名を入力することです.
ファイルパスはcontextのfilesDirプロファイルから内部リポジトリfilesディレクトリにアクセスします.
この場合、contextは継承されたアクティビティや計画から直接使用できるので、filesという同じ空間で読み取りと書き込みを行うと、この方法がよい.
val file = File(baseContextl.filesDir, "파일명")
//액티비티의 경우 filesDir이 기본 프로퍼티임
val file = File(filesDir, "파일명")
Fileクラスを使用して作成したファイルの例if(file.exists()){ //파일의 존재여부 확인
Log.d("File", "파일이 존재합니다")
}
if(file.isFile){ //File의 생성자에 전달된 경로가 파일인지를 확인!!
Log.d("File", "파일이 입니다")
}
if(file.isDirectory){ //File의 생성자에 전달된 경로가 디렉토리인지를 확인!!
Log.d("File", "디렉터리 입니다")
}
Log.d("File", "이 파일으 이름은 ${file.name}입니다") //생성된 파일 또는 디렉토리 이름 반환
if(!file.exists()){
file.createNewFile()
} //해당 경로에 파일이 존재하지 않으면 파일을 생성할 수 있음. exists와 함께 많이 사용.
if(!file.exists()){
file.mkdirs()
} // 디렉터리 생성, 생성하려믄 디렉토리 중간 경로도 함께 생성한다.
file.delete()
//파일이나 디렉토리 삭제. 디렉토리의 경우 내부에 파일이 존재하면 삭제되지않는다.
Log.d("File", "이 파일(디렉토리)의 절대 경로는 ${file.absolutePath}입니다."
ファイルの読み込みと書き込みのストリームファイルの実際のデータを読み取り、書き込むにはstreamという複雑なクラスを使用する必要があります.
ストリームは、ファイルにパイプを接続し、そのパイプからデータを抽出します.
ファイルのサイズを指定できないため、パイプは読み取りまたは書き込み時にのみ接続されます.
コンピュータを効率的に使用するには、パイプを取り外す必要があります.
読み書きの区別がある.
読み取り専用ストリーム、書き込みストリームを使用します.
テキストファイルの読み込み
テキストファイルを読み込むときにリーダシリーズのストリームを使用します.
ファイルパスをパラメータとしてファイル情報を読み込み、ストリーム>ファイルの実際のデータを読み込みます.
SharedPreferences
アンドロイドプラットフォーム上の簡単なデータを格納する機能.
Shared Preferencesは内部リポジトリを使用しており、権限を設定する必要がなく、非常に簡単です.
主にログイン情報やアプリケーションのステータス情報を格納するために使用されます!!
アクティブテントに値を挿入して減算する動作に似ています.
データはキーと値のペアとして保存できます.データはxml形式で保存され、アプリケーションが閉じてもデータは存在します.
Shared Preferencesの使用
<値保存時>
作成
<取得値>
作成
1.Shared Preferenceの作成
val shared = getSharedPreferences("이름", Context.MODE_PRIVATE)
//액티비티에서 이렇게 호출하면 SharedPreferences가 반환됨.
var preference = getPreferences(Context.MODE_PRIVATE)
Reference
この問題について(ファイルI/O), 我々は、より多くの情報をここで見つけました https://velog.io/@jiyoon/파일-입출력テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol