2012-08-28 29 views
5

Tôi muốn viết trong một tệp và sau đó đọc từ đó. Trong khi sử dụng phương thức openFileOutput (.., ..), tôi nhận được rằng phương thức này không được định nghĩa vì nó là một phương thức trừu tượng. Sau đó, tôi đã thử nó bằng cách chuyển ngữ cảnh bằng cách sử dụng getBaseContext(); và cảnh báo đã bị tắt nhưng tôi không nhận được kết quả đọc đầu ra. Tôi cũng đã cố gắng vượt qua bối cảnh như một tham số trong constructor nhưng điều đó cũng không giúp được gì. Tôi muốn viết các phương thức tĩnh để không phải khởi tạo lớp mỗi lần và tĩnh không phải là lý do vì tôi đã thử mà không có nó. Đoạn mã được đưa ra dưới đây.Chuỗi viết và đọc cho bộ nhớ trong trong Android

Tôi có cần chỉ định đường dẫn nào ngay cả khi sử dụng bộ nhớ trong không? Có quyền nào được yêu cầu để ghi tệp trên bộ nhớ trong không? (Tôi đã bao gồm các quyền ghi vào lưu trữ bên ngoài)

public static void write (String filename,Context c,String string) throws IOException{ 
    try { 
     FileOutputStream fos = c.openFileOutput(filename, Context.MODE_PRIVATE); 
     fos.write(string.getBytes()); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 


public static String read (String filename,Context c) throws IOException{ 

    StringBuffer buffer = new StringBuffer(); 

    FileInputStream fis = c.openFileInput(filename); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); 
    if (fis!=null) {        
     while ((Read = reader.readLine()) != null) {  
      buffer.append(Read + "\n"); 
     }    
    }  
    fis.close(); 
    return Read; 
} 
+2

Bạn muốn trả về buffer.toString() trong phần read()! (BTW, "String Read;" dường như bị thiếu trong đoạn mã của bạn, tuy nhiên bạn không nên sử dụng các biến không phải là chữ hoa.) – Stefan

+0

Vậy làm cách nào tôi có thể làm điều đó? Đoạn mã có thể hữu ích. – Atinder

+4

return buffer.toString() làm dòng cuối cùng trong phương thức read() của bạn. Và thêm "String Read;" ở đâu đó trước vòng lặp while của bạn để xác định biến "Đọc". Và bạn nên sử dụng chữ thường, ví dụ: Chuỗi ký tự; while ((line = reader.readLine())! = null) buffer.append (dòng + "\ n"); – Stefan

Trả lời

2

trở buffer.toString() trong phương pháp đọc đã giải quyết được vấn đề. Cảm ơn Stefan.

+0

Xin lỗi vì đã tạo lại chuỗi này sau một thời gian dài. Tôi đọc một tập tin từ thư mục 'asset' và sau đó đã viết tập tin đó bằng cách sử dụng' FileOutputStream'. Câu hỏi của tôi là đường dẫn của tệp được lưu bởi 'FileOutputStream'. –

Các vấn đề liên quan