3 votes

Android File I/O openFileInput() non défini

            package com.example.tictactoeshowgrid;

            import android.os.Bundle;
            import java.io.*;
            import android.widget.Toast;
            import android.content.*;

            import java.io.FileInputStream;
            import java.io.FileNotFoundException;
            import java.io.FileOutputStream;
            import java.io.IOException;
            import java.util.Date;

            import android.content.Context;

                public class ImportOBJ {

                protected void onCreate(String filename) {
                    try
                    {
                        FileInputStream fis = openFileInput(filename);
                        BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
                        String line = null, input="";
                        while ((line = reader.readLine()) != null)
                            input += line;
                        reader.close();
                        fis.close();
                        //toast("File successfully loaded.");
                        //return input;
                    }
                    catch (Exception ex)
                    {
                        //toast("Error loading file: " + ex.getLocalizedMessage());
                        //return "";
                    }
                }
            }

J'étudie un exemple d'entrée/sortie de fichier pour Android. Je me demande pourquoi openFileInput affiche une erreur comme étant une fonction non définie. Je pense que j'ai peut-être manqué une importation ? Si ce n'est pas le cas, il doit y avoir un autre problème.

Merci d'avance...

10voto

ρяσѕρєя K Points 51253

Pour accéder à openFileInput dans une classe qui n'est pas une classe d'activité, vous devrez lui transmettre le contexte d'activité en utilisant une méthode paramétrée ou en utilisant la méthode ImportOBJ constructeur de la classe comme :

protected void onCreate(String filename,Context context) {
   try
     {
         FileInputStream fis = context.openFileInput(filename);  
         //...your code here...      
     }
   catch (Exception ex)
     {

     }
}

et à partir du contexte de votre Activity pass comme :

ImportOBJ obj_import=new ImportOBJ();
obj_import.onCreate(<File_Name_Here>,Your_Current_Activity_Name.this);

1voto

hasanghaforian Points 5794

Si l'erreur est :

La méthode openFileInput(String) est indéfinie pour le type ...

Vous devez utiliser openFileInput dans un Context Par exemple, un Activity est un Context Donc si vous connectez votre classe à ça, l'erreur doit être résolue :

public class ImportOBJ extends Activity{
.
.
.

}

Vous pouvez voir What is Context in Android? pour plus de détails sur le Contexte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X