Android aucun fichier ecrit par le code
lukas6410
Messages postés
25
Date d'inscription
Statut
Membre
Dernière intervention
-
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j,ai une class java qui me permet d'ecrire et de lire un fichier sur le stockage externe (StorageUtils)voir si dessous:
voila et j,ai mon activité ou je veux récupéré et sauvergader une String sur un fichier externe:
je pense qu'il y a un problème avec la methode save(),et j,ai portant aussi déclarer les permission dans le Manifest si quelqu'un peux m'aider ou demande d'autres renseignement
j,ai une class java qui me permet d'ecrire et de lire un fichier sur le stockage externe (StorageUtils)voir si dessous:
package com.example.mycontact; import android.content.Context; import android.os.Environment; import android.widget.Toast; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; public class StorageUtils { private static File createOrGetFile(File destination, String filename, String foldername){ File folder = new File(destination,foldername); return new File(folder,filename); } private static String readOnFile(Context context, File file){ String result = null; if (file.exists()){ BufferedReader br; try { br = new BufferedReader(new FileReader(file)); try { StringBuilder sb = new StringBuilder(); String line = br.readLine(); while (line != null){ sb.append(line); sb.append("\n"); line = br.readLine(); } result = sb.toString(); } finally { br.close(); } } catch (IOException e){ Toast.makeText(context,context.getString(R.string.error_happened),Toast.LENGTH_LONG).show(); } } return result; } private static void writeOnFile(Context context,String text,File file){ try{ file.getParentFile().mkdirs(); FileOutputStream fos = new FileOutputStream(file); Writer w =new BufferedWriter(new OutputStreamWriter(fos)); try{ w.write(text); w.flush(); fos.getFD().sync(); }finally { w.close(); Toast.makeText(context,context.getString(R.string.saved),Toast.LENGTH_LONG).show(); } }catch (IOException e){ Toast.makeText(context,context.getString(R.string.error_happened),Toast.LENGTH_LONG).show(); } } public static String getTextFromStorage(File rootDestination,Context context,String filename,String foldername){ File file = createOrGetFile(rootDestination,filename,foldername); return readOnFile(context,file); } public static void setTextInStorage(File rootDestination,Context context,String filename,String foldername,String text){ File file = createOrGetFile(rootDestination,filename,foldername); writeOnFile(context,text,file); } public static boolean isExternalStorageWritable(){ String state = Environment.getExternalStorageState(); return (Environment.MEDIA_MOUNTED.equals(state)); } public static boolean isExternalStorageReadable(){ String state = Environment.getExternalStorageState(); return(Environment.MEDIA_MOUNTED.equals(state)|| Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)); } }
voila et j,ai mon activité ou je veux récupéré et sauvergader une String sur un fichier externe:
package com.example.mycontact; import android.content.Context; import android.os.Build; import android.os.Environment; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; import java.io.File; public class Register_Activity extends AppCompatActivity { private String nom_enter; private int compteur_verif=0; private EditText editText; private String prenom_enter; private String num_enter; private String adress_enter; private EditText nom ; private EditText prenom ; private EditText num ; private EditText adress; private Button valider; private static final String FILENAME = "mescontacts.txt"; private static final String FOLDERNAME = "mescontacts"; private static final int RC_STORAGE_WRITE_PERMS = 100; @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newcontact); nom=(EditText)findViewById(R.id.nom_enter); prenom=(EditText)findViewById(R.id.prenom_enter); num=(EditText)findViewById(R.id.num_enter); adress=(EditText)findViewById(R.id.adress_enter); valider=(Button)findViewById(R.id.button); num.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { valider.setEnabled(true); } @Override public void afterTextChanged(Editable s) { nom_enter=num.getText().toString(); } }); nom.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { valider.setEnabled(true); } @Override public void afterTextChanged(Editable s) { prenom_enter=prenom.getText().toString(); } }); valider.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { adress_enter=adress.getText().toString(); if (num.length() != 10){ valider.setEnabled(false); Toast.makeText(getApplicationContext(),"le numéro n'est pas valide",Toast.LENGTH_LONG).show(); } if(nom.length() <= 0){ valider.setEnabled(false); Toast.makeText(getApplicationContext(),"vous avez oublier le nom",Toast.LENGTH_LONG).show(); } if(num.length() == 10){ save(); Toast.makeText(getApplicationContext(),"sauvegarde",Toast.LENGTH_LONG).show(); } } }); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { this.readFromStorage(); } } @RequiresApi(api = Build.VERSION_CODES.KITKAT) private void save(){ this.writeOnExternalStorage(); } @RequiresApi(api = Build.VERSION_CODES.KITKAT) private void readFromStorage(){ if(StorageUtils.isExternalStorageReadable()){ this.num.setText (StorageUtils.getTextFromStorage(getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS),this,FILENAME,FOLDERNAME)); } } @RequiresApi(api = Build.VERSION_CODES.KITKAT) private void writeOnExternalStorage(){ if (StorageUtils.isExternalStorageWritable()){ StorageUtils.setTextInStorage (Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOCUMENTS),this,FILENAME,FOLDERNAME,this.num.getText().toString()); }else{ Toast.makeText(this,getString(R.string.external_storage_impossible_create_file),Toast.LENGTH_LONG).show(); } } }
je pense qu'il y a un problème avec la methode save(),et j,ai portant aussi déclarer les permission dans le Manifest si quelqu'un peux m'aider ou demande d'autres renseignement
A voir également:
- Android aucun fichier ecrit par le code
- Fichier bin - Guide
- Code ascii - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
J'ai déplacé la discussion dans le forum Android.
Notons cependant que les programmes Android sont codés en Java, bien qu'ils utilisent des librairies spécifiques.