Bonjour. Je vais commencer à écrire des articles aujourd'hui. J'ai l'intention d'utiliser Qiita comme mémo de programmation. J'utilise Android depuis environ 2 ans. Je suis un étudiant diplômé qui commencera à travailler l'année prochaine.
Cette fois, je vais vous expliquer comment enregistrer et charger des fichiers dans la mémoire interne d'Android. Le contenu de chaque article sur le stockage Android est légèrement différent, et je pense que certaines personnes peuvent se perdre, alors j'écrirai un article standard.
L'environnement de développement est le suivant. *Android Studio 4.0.1 *targetSdkVersion 28 *Google Nexus 5x
Android dispose d'un stockage interne et d'un stockage externe.
■ Stockage interne
■ Stockage externe
Les trois types de stockage suivants sont utilisés pour le stockage.
Chaque stockage est enregistré dans ce qui suit dans la structure de l'explorateur de fichiers de périphérique d'Android Studio.
Pour enregistrer un fichier, utilisez la méthode openFileOutput () `` `pour obtenir une instance de`` FileOutputStream
. Cela vous permettra d'ouvrir le flux. De plus, si vous utilisez ```openFileOutput () `` `, le chemin sera automatiquement acquis et sauvegardé même si vous ne spécifiez pas le chemin du stockage interne.
FileOutputStream fileOutputstream = openFileOutput("text.txt", Context.MODE_PRIVATE);
** Premier argument **
"/chemin/nom de fichier"
** Deuxième argument **
valeur | La description |
---|---|
MODE_WORLD_READABLE | Peut être référencé à partir d'autres applications |
MODE_WORLD_WRITEABLE | Peut être écrit à partir d'autres applications |
MODE_PRIVATE | Non accessible depuis d'autres applications |
MODE_APPEND | S'il y a un fichier, ajoutez |
De plus, si vous souhaitez spécifier plusieurs modes, vous pouvez spécifier plusieurs modes en connectant des tuyaux.
mode_private | mode_append
Après cela, convertissez la chaîne de caractères que vous souhaitez écrire dans le fichier en un tableau de type d'octets et écrivez-la dans le flux en utilisant
write () '' ``.
fileOutputStream.write(str.getBytes());
Pour lire un fichier, récupérez une instance de `FileInputStream``` en utilisant la méthode` `ʻopenFileInput ()`
. Cela vous permettra d'ouvrir le flux.
FileInputStream fileInputStream = openFileInput("text.txt");
inputstreamreader
Lit les octets du flux et les décode en caractères spécifiés. Ilbufferedreader
Mettez-le et lisez-le ligne par ligne. Pour augmenter l'efficacité de la conversionbufferedreader
À l'intérieurinputstreamreader
Cela semble bon à envelopper.
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));
String lineBuffer;
while (true){
lineBuffer = reader.readLine();
if (lineBuffer != null){
text += lineBuffer;
}
else {
break;
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="50dp"
android:layout_marginTop="100dp"
android:text="Save File"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginTop="100dp"
android:text="Read File"
app:layout_constraintStart_toEndOf="@+id/button1"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="120dp"
android:text=""
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
MainActivity.java
package com.example.keita.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
private TextView textView;
private Button button1;
private Button button2;
private EditText editText;
private String fileName = "test.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.textView = findViewById(R.id.textView);
this.editText = findViewById(R.id.editText);
this.button1 = findViewById(R.id.button1);
this.button2 = findViewById(R.id.button2);
this.button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = editText.getText().toString();
saveFile(fileName, text);
}
});
this.button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = readFile(fileName);
textView.setText(str);
}
});
}
private void saveFile(String file, String str){
try {
FileOutputStream fileOutputStream = openFileOutput(file, MODE_PRIVATE | MODE_APPEND);
fileOutputStream.write(str.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
private String readFile(String file){
String text = null;
try {
FileInputStream fileInputStream = openFileInput(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));
String lineBuffer;
while (true){
lineBuffer = reader.readLine();
if (lineBuffer != null){
text += lineBuffer;
}
else {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return text;
}
}
Recommended Posts