2015-01-07 13 views
8

Tôi có một ứng dụng lưu vào đầu vào dữ liệu (lưu trữ nội bộ) của người dùng và lúc khởi động, nó tải tập tin này và hiển thị nội dung. Tôi sẽ biết: nơi tôi có thể tìm thấy tập tin của tôi (data.txt)? Ngoài ra, nếu tôi nhập "Hello" và sau đó "World" khi tôi tải tập tin tôi thấy "HelloWorld" trong cùng một dòng nhưng tôi muốn "Hello" và "World" được in ở 2 dòng khác nhau.Android FileOutputStream location save file

Đối với tiết kiệm file:

public void writeToFile(String data) { 
    try { 
     FileOutputStream fou = openFileOutput("data.txt", MODE_APPEND); 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fou); 
     outputStreamWriter.write(data); 
     outputStreamWriter.close(); 
    } 
    catch (IOException e) { 
     Log.e("Exception", "File write failed: " + e.toString()); 
    } 
} 

Nhằm giúp bạn tải file:

public String readFromFile() { 

    String ret = ""; 

    try { 
     InputStream inputStream = openFileInput("data.txt"); 

     if (inputStream != null) { 
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
      String receiveString = ""; 
      StringBuilder stringBuilder = new StringBuilder(); 

      while ((receiveString = bufferedReader.readLine()) != null) { 
       stringBuilder.append(receiveString); 
      } 

      inputStream.close(); 
      ret = stringBuilder.toString(); 
     } 

    } 
    catch (FileNotFoundException e) { 
     Log.e("login activity", "File not found: " + e.toString()); 
    } catch (IOException e) { 
     Log.e("login activity", "Can not read file: " + e.toString()); 
    } 

    return ret; 
} 

Cảm ơn

[UPDATE]

Tôi đã chèn "\ n" sau mỗi lần nhập:

user = (EditText) v.findViewById(R.id.username); 
writeToFile(user.getText().toString() + "\n"); 

Nhưng khi tôi in tập tin của tôi họ luôn luôn trên cùng một dòng

+0

làm thế nào tôi có thể thiết lập con đường mới để lưu tập tin ? – xXJohnRamboXx

Trả lời

11

nơi tôi có thể tìm thấy tệp của mình (data.txt)?

Bạn có thể tìm thấy con đường dẫn đến thư mục mà được tạo ra bởi openFileOutput sử dụng YourActivity.this.getFilesDir().getAbsolutePath()

nhưng tôi muốn "Hello" và "thế giới" in 2 dòng khác nhau.

Sử dụng line.separator sau khi viết chữ trong tập tin như:

String separator = System.getProperty("line.separator"); 
outputStreamWriter.write(data); 
outputStreamWriter.append(separator); 
... 

Hoặc bạn cũng có thể sử dụng replaceAll để phá vỡ String trong nhiều dòng:

String separator = System.getProperty("line.separator"); 
data=data.replaceAll(" ",separator); 
+0

đường dẫn của tôi là/data/data/mypackage nhưng nếu tôi đến đó trống .. có thể nó là cần thiết thiết bị của tôi là bắt nguồn từ để xem nó .. Dấu phân cách chuỗi = System.getProperty ("line.separator"); không hoạt động..từ khóa vẫn nằm trong cùng một dòng – xXJohnRamboXx

+0

@xXJohnRamboXx: bạn có chắc chắn khi bạn đang đọc dữ liệu từ tệp rồi thêm dòng mới không? –

+1

@xXJohnRamboXx: hãy thử nó như :: 'stringBuilder.append (receiveString); stringBuilder.append (" \ n ");' –

3

Tôi đoán bạn có thể tìm thấy nó ở đây: data/data/[tên gói của bạn]/... và về cách viết hai dòng riêng biệt chỉ thêm "\ n" bất cứ khi nào bạn cần đến một dòng khác.

+0

dữ liệu/dữ liệu của tôi trống .. tôi vừa thêm "\ n" sau mỗi từ nhưng không có gì:/ – xXJohnRamboXx

+0

Cập nhật mã mới của bạn trước để giải quyết vấn đề mới –

+0

Nếu bạn muốn ghi dữ liệu vào sdcard của mình thì hãy đọc kỹ hướng dẫn: http://chrisrisner.com/31-Days-of-Android--Day-23%E2%80%93Writing-and-Reading-Files –