2012-06-26 7 views
-2

Rechercher partout sur Internet et n'a pas pu trouver un code de travail. Comment puis-je obtenir le contenu d'un document txt et le renvoyer. Supposons que j'ai un fichier txt (src/my.proovi.namespace/data.txt) Et j'ai créé une méthode appelée refresh_all_data(); où je veux que les données soient collectées et retournées. Dans la méthode d'activité principale, j'ai juste besoin d'obtenir le contenu en tant que (String content = refresh_all_data();) Et c'est tout.android développement ouvrir le fichier txt et retourner le contenu

Devrait être facile, mais juste ne peux pas trouver une réponse de travail. Merci beaucoup.

+0

Mybe je suis juste un débutant et c'est pourquoi juste pourrait le faire fonctionner. J'ai tout supprimé et j'ai posté ce message. Je ne peux donc pas fournir ce que j'ai. –

Répondre

1

Placez le fichier dans le dossier /assets de votre projet, vous pouvez obtenir une InputStream en l'ouvrant throught la AssetManager:

InputStream in = getAssets().open("data.txt"); 

Vous pouvez alors lire les lignes du fichier et les ajouter à un StringBuilder en utilisant un Reader:

//The buffered reader has a method readLine() that reads an entire line from the file, InputStreamReader is a reader that reads from a stream. 
BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
//This is the StringBuilder that we will add the lines to: 
StringBuilder sb = new StringBuilder(512); 
String line; 
//While we can read a line, append it to the StringBuilder: 
while((line = reader.readLine()) != null){ 
    sb.append(line); 
} 
//Close the stream: 
reader.close(); 
//and return the result: 
return sb.toString(); 
+1

getAssets ne peut pas être résolu. La méthode readLine() est indéfinie pour le type Reader –

+0

@RasimMehtijev, désolé, typo de ma part, lecteur devrait être de type 'BufferedReader' au lieu de seulement' Reader', et j'ai raté les parenthèses après 'getAssets()'. – Jave

+0

Exception d'exception non gérée de type IOException. affiche sur getAssets(). open ("data.txt"); Ceci est la partie où je suis vraiment confus Eclipse suggère de le surabonder avec try/catch. C'est là que tout va bien. –

0

Implémentez le code ci-dessous dans une fonction et appelez-le où vous voulez.

try{ 
     // Open the file that is the first 
     // command line parameter 
     FileInputStream fstream = new FileInputStream("textfile.txt"); 
     // Get the object of DataInputStream 
     DataInputStream in = new DataInputStream(fstream); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     String strLine; 
     //Read File Line By Line 
     while ((strLine = br.readLine()) != null) { 
     // Print the content on the console 
     System.out.println (strLine); 
     } 
     //Close the input stream 
     in.close(); 
     }catch (Exception e){//Catch exception if any 
     System.err.println("Error: " + e.getMessage()); 
     } 
+0

ici strLine aura tout le contenu du fichier. donc dans la méthode, vous pouvez retourner cette chaîne –

+0

S'il vous plaît donner la raison pour le vote vers le bas. et qu'est-ce qui me manque ici? donc je peux améliorer cela –

+0

Désolé je pourrais juste le faire fonctionner. J'ai essayé cette paix de code plusieurs fois. Je pense que j'ai juste besoin de plus de pratique et de connaissances pour le faire fonctionner Mais merci quand même. –

0

Ok, donc ce que je suis arrivé.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String test = null; 
    try { 
     test = refresh_all_data(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    TextView day1Label = new TextView(this); 
    day1Label.setText(test); 
    setContentView(day1Label); 

} 

Et le refresh_all_data(); méthode.

private String refresh_all_data() throws IOException 
{ 

    InputStream in = getAssets().open("data.txt"); 
    //The buffered reader has a method readLine() that reads an entire line from the file, InputStreamReader is a reader that reads from a stream. 
    BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
    //This is the StringBuilder that we will add the lines to: 
    StringBuilder sb = new StringBuilder(512); 
    String line; 
    //While we can read a line, append it to the StringBuilder: 
    while((line = reader.readLine()) != null){ 
     sb.append(line); 
    } 
    //Close the stream: 
    reader.close(); 
    //and return the result: 
    return sb.toString(); 
} 

Merci à Jave.

Questions connexes