Android aucun fichier ecrit par le code

Fermé
lukas6410 Messages postés 25 Date d'inscription mardi 24 mars 2020 Statut Membre Dernière intervention 19 mai 2021 - Modifié le 25 mars 2020 à 11:46
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 18 mai 2020 à 14:17
Bonjour,
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:

2 réponses

samigtx1459 Messages postés 482 Date d'inscription vendredi 3 août 2012 Statut Membre Dernière intervention 13 janvier 2024 67
Modifié le 17 mai 2020 à 18:55
Tu es dans la mauvaise catégorie tu devrais être dans la catégorie Android et pas Java
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
18 mai 2020 à 12:45
Bonjour,

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.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
18 mai 2020 à 14:17
Bonjour,

je pense qu'il y a un problème avec la methode save()
As-tu regardé les logs pour savoir ce qui se passe ?
0