Dans le package io, deux flux d'opérations de données indépendants de la plate-forme sont fournis : le flux de sortie de données (DataOutputStream) et le flux d'entrée de données (DataInputStream).
Habituellement, le flux de sortie de données produira les données dans un certain format, puis les données seront lues dans un certain format via le flux d'entrée de données. DataOutputStream et DataOutputStream sont utilisés pour lire et écrire des données au format d'octet fixe.
Créer un objet
DataOutputStream out = new DataOutputStream(相接的流)
MéthodeÉcrivez des données de type int dans le flux de sortie de données, et la couche inférieure écrit 4 octets dans le flux de sortie de base
writeInt(int i)
Écrivez des données de type double dans la sortie de données stream, la couche inférieure convertira le double en un type long, l'écrira dans le flux de sortie de base et produira 8 octets
writeDouble(double d)
Utilisation du codage utf-8 de manière indépendante de la machine pour écrire la chaîne dans le flux de sortie de base. Générez d'abord 2 octets représentant la longueur en octets de la chaîne, puis affichez ces valeurs d'octets
writeUTF()
Créer un objet
DataInputStream dis = new DataInputStream(InputStream in);
MéthodeLire des données de type int à partir du flux d'entrée de données, lire 4 octets
readInt()
Lire 8 octets
readDouble()
Lisez d'abord 2 octets pour déterminer la longueur en octets de la chaîne, puis lisez ces valeurs d'octets
readUTF()
Conseils :Fin de la lecture, une exception EOF se produira lors de la nouvelle lecture
public class Main { public static void main(String[] args) throws Exception { DataOutputStream out = new DataOutputStream(new FileOutputStream("d:/abc/f5")); out.writeInt(20211011); out.writeUTF("晴,18度"); out.writeInt(20211012); out.writeUTF("晴,19度"); out.writeInt(20211013); out.writeUTF("多云,17度"); out.close(); } }
Résultats d'exécution :
public class Main { public static void main(String[] args) throws Exception { DataInputStream in = new DataInputStream(new FileInputStream("d:/abc/f5")); try { while (true) { int date = in.readInt(); String s = in.readUTF(); System.out.println(date); System.out.println(s); } } catch (EOFException e) { //正确读取结束,不需要处理 } in.close(); } }
Résultats d'exécution :
Obligatoire pour enregistrer les informations sur les élèves dans les éléments suivants format
Numéro d'étudiant 00 00 00 01
Nom 00 03 61 62 63
Sexe 00 61
Âge 00 00 00 16
xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="20dp"> <EditText android:id="@+id/et1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="学号" /> <EditText android:id="@+id/et2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="姓名" /> <EditText android:id="@+id/et3" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="性别" /> <EditText android:id="@+id/et4" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="年龄" /> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="读取" /> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" /> </LinearLayout>
java
public class IoActivity extends AppCompatActivity { private EditText et1; private EditText et2; private EditText et3; private EditText et4; private Button btn1; private Button btn2; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_io); setViews(); setListeners(); } private void setViews() { et1 = findViewById(R.id.et1); et2 = findViewById(R.id.et2); et3 = findViewById(R.id.et3); et4 = findViewById(R.id.et4); btn1 = findViewById(R.id.btn1); btn2 = findViewById(R.id.btn2); tv = findViewById(R.id.tv); } private void setListeners() { btn1.setOnClickListener(view -> baocun()); btn2.setOnClickListener(view -> duqu()); } private void baocun() { //IO操作有IO异常,所以进行try...catch... /* * * ┌DataOutputStream * ┌FileOutputStream * sdcard */ try { int id = Integer.parseInt(et1.getText().toString()); String name = et2.getText().toString(); String gender = et3.getText().toString(); int age = Integer.parseInt(et4.getText().toString()); DataOutputStream out = new DataOutputStream( new FileOutputStream(getExternalFilesDir(null) + "/stu.txt", true) ); out.writeInt(id); out.writeUTF(name); out.writeChar(gender.charAt(0)); out.writeInt(age); out.close(); Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } private void duqu() { //IO操作有IO异常,所以进行try...catch... try { DataInputStream in = new DataInputStream( new FileInputStream(getExternalFilesDir(null) + "/stu.txt") ); try { tv.setText(""); while (true) { int id = in.readInt(); String name = in.readUTF(); char gender = in.readChar(); int age = in.readInt(); tv.append("id:" + id + "\n" + "name:" + name + "\n" + "gender:" + gender + "\n" + "age:" + age + "\n"); } } catch (EOFException e) { } in.close(); Toast.makeText(this, "读取成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(this, "读取失败", Toast.LENGTH_SHORT).show(); e.printStackTrace(); } } }
Exécutez le programme :
Cliquez sur le bouton de lecture :
oùgetExternalFilesDir(null)
obtenir le chemin suivant
/storage/emulated/0/Android/data/yourPackageName/files
Ce répertoire sera dans L'application est supprimée lors de sa désinstallation , et l'accès à ce répertoire ne nécessite pas d'application dynamique pour les autorisations de STOCKAGE.
Donc, l'exécution du programme générera un fichier stu.txt dans ce chemin
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!