2010-10-27 16 views
6

Tôi cần một ứng dụng Mẫu thể hiện lưu tệp bộ nhớ cache trong Android và cũng làm cách nào để sử dụng phương thức getCacheDir()?
Bất cứ ai cũng có thể giúp tôi phân loại vấn đề này không? Tôi cần phải lưu tệp vào một thư mục tuyệt đối và cần phải phân tích cú pháp tệp đó.
Cảm ơn trước.Cần chương trình mẫu về "lưu tệp bộ nhớ cache" trong Android

+0

Hi, Bất kỳ thông tin cập nhật liên quan đến truy vấn của tôi. Bất kỳ ai có thể giúp tôi trong việc phân loại vấn đề này? –

Trả lời

0

Trừ khi bạn thực sự cần nó để được cache, bạn nên nhìn vào lưu trữ các tập tin liên tục hơn:

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

tôi đã không cố gắng làm việc với bộ nhớ cache, nhưng có vẻ như khi bạn nhận được xử lý, nó sẽ làm việc với các lệnh tương tự được sử dụng cho các tệp liên tục.

6

Sử dụng (trong một hoạt động):

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

Đẹp, nhưng viết luôn trả về false. Chỉnh sửa writeAllText để có được đúng hay sai nếu là ngoại lệ. –

+0

Tôi đã thay đổi mã một chút để sửa lỗi đó. Tôi nghĩ rằng nên làm điều đó. – Nate

+1

Điều này sẽ được đưa vào Tài liệu nếu chưa có tài liệu –

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(); 
    } 
Các vấn đề liên quan