2010-10-27 73 views
6

我需要一个示例应用程序,演示如何在Android中保存缓存文件以及如何使用getCacheDir()方法?
任何人都可以帮我解决这个问题吗?我需要将文件保存在绝对目录中,并且需要解析该文件。
提前感谢。在Android中“保存缓存文件”需要示例程序

+0

你好,对我的查询任何更新。任何人都可以帮我解决这个问题吗? – 2010-10-27 04:54:19

回答

6

使用(在一个活动):

String textToCache = "Some text"; 
boolean success = GetCacheDirExample.writeAllCachedText(this, "myCacheFile.txt", textToCache); 
String readText = GetCacheDirExample.readAllCachedText(this, "myCacheFile.txt"); 

GetCacheDirExample.java

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 

import android.content.Context; 

public class GetCacheDirExample { 

    public static String readAllCachedText(Context context, String filename) { 
     File file = new File(context.getCacheDir(), filename); 
     return readAllText(file); 
    } 

    public static String readAllResourceText(Context context, int resourceId) { 
     InputStream inputStream = context.getResources().openRawResource(resourceId); 
     return readAllText(inputStream); 
    } 

    public static String readAllFileText(String file) { 
     try { 
      FileInputStream inputStream = new FileInputStream(file); 
      return readAllText(inputStream); 
     } catch(Exception ex) { 
      return null; 
     } 
    } 

    public static String readAllText(File file) { 
     try { 
      FileInputStream inputStream = new FileInputStream(file); 
      return readAllText(inputStream); 
     } catch(Exception ex) { 
      return null; 
     } 
    } 

    public static String readAllText(InputStream inputStream) { 
     InputStreamReader inputreader = new InputStreamReader(inputStream); 
     BufferedReader buffreader = new BufferedReader(inputreader); 

     String line; 
     StringBuilder text = new StringBuilder(); 

     try { 
      while ((line = buffreader.readLine()) != null) { 
       text.append(line); 
       text.append('\n'); 
      } 
     } catch (IOException e) { 
      return null; 
     } 

     return text.toString(); 
    } 

    public static boolean writeAllCachedText(Context context, String filename, String text) { 
     File file = new File(context.getCacheDir(), filename); 
     return writeAllText(file, text); 
    } 

    public static boolean writeAllFileText(String filename, String text) { 
     try { 
      FileOutputStream outputStream = new FileOutputStream(filename); 
      return writeAllText(outputStream, text); 
     } catch(Exception ex) { 
      ex.printStackTrace(); 
      return false; 
     } 
    } 

    public static boolean writeAllText(File file, String text) { 
     try { 
      FileOutputStream outputStream = new FileOutputStream(file); 
      return writeAllText(outputStream, text); 
     } catch(Exception ex) { 
      ex.printStackTrace(); 
      return false; 
     } 
    } 

    public static boolean writeAllText(OutputStream outputStream, String text) { 
     OutputStreamWriter outputWriter = new OutputStreamWriter(outputStream); 
     BufferedWriter bufferedWriter = new BufferedWriter(outputWriter); 
     boolean success = false; 

     try { 
      bufferedWriter.write(text); 
      success = true; 
     } catch(Exception ex) { 
      ex.printStackTrace(); 
     } finally { 
      try { 
       bufferedWriter.close(); 
      } catch(Exception ex) { 
       ex.printStackTrace(); 
      } 
     } 

     return success; 
    } 

} 
+1

不错,但写入总是返回false。如果是异常,编辑writeAllText以得到真或假。 – 2014-10-23 12:09:41

+0

我修改了一些代码来解决这个问题。我认为应该这样做。 – Nate 2014-10-23 13:31:28

+1

如果它不存在,应将其放入文档中 – 2016-08-10 15:45:14

3
/** Getting Cache Directory */ 
    File tempFile; 
    File cDir = getBaseContext().getCacheDir(); 

/* Makes a textfile in the absolute cache directory */ 
tempFile = new File(cDir.getPath() + "/" + "textFile.txt") ; 

/* Writing into the created textfile */ 
FileWriter writer=null; 
try { 
    writer = new FileWriter(tempFile); 
    writer.write("hello workd!"); 
    writer.close(); 
    } catch (IOException e) { 
       e.printStackTrace(); 
      } 

/* Reading from the Created File */ 
String strLine=""; 
StringBuilder text = new StringBuilder(); 
    try { 
     FileReader fReader = new FileReader(tempFile); 
     BufferedReader bReader = new BufferedReader(fReader); 

     while((strLine=bReader.readLine()) != null ){ 
      text.append(strLine+"\n"); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
相关问题