2016-06-28 26 views
0

Ich versuche, jeden besuchten URL in einer .txt Datei zu speichern. Es funktioniert gut, aber jeder neue URL ersetzt den älteren.Wie fügt man Zeichenketten zur Textdatei hinzu?

1) Wie füge ich URLs hinzu (oben, nicht unten)?

2) Wie füge ich einen Zeilenabstand zwischen jeder URL hinzu?

MainActivity.java

@Override 
public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    super.onPageStarted(view, url, favicon); 
    // don't hide URLBar on welcome screen 

    // save to history.txt 
    HistoryHelper file = new HistoryHelper(view.getContext()); 
    file.writeToSD(url.toString()); 
} 

HistoryHelper.java

public class HistoryHelper { 

    String TAG = "MyFile"; 
    Context context; 

    public HistoryHelper(Context context) { 
     this.context = context; 
    } 

    public Boolean writeToSD(String text) { 
     Boolean write_successful = false; 
     File root = null; 
     try { 
      // check for SDcard 
      root = Environment.getExternalStorageDirectory(); 
      Log.i(TAG, "path.." + root.getAbsolutePath()); 

      // check sdcard permission 
      if (root.canWrite()) { 
       File fileDir = new File(
         Environment.getExternalStorageDirectory() + "/AVD/"); 
       fileDir.mkdirs(); 

       File file = new File(fileDir, "History.txt"); 
       FileWriter filewriter = new FileWriter(file); 
       BufferedWriter out = new BufferedWriter(filewriter); 
       out.write(text); 
       out.close(); 
       write_successful = true; 
       Toast.makeText(context, "success!", Toast.LENGTH_LONG).show(); 
      } 
     } catch (IOException e) { 
      Log.e("ERROR:---", 
        "Could not write file to SDCard" + e.getMessage()); 
      write_successful = false; 
      Toast.makeText(context, "operation failed!", Toast.LENGTH_LONG) 
        .show(); 
     } 
     return write_successful; 
    } 
} 

Antwort

1

Datei öffnen in Anfügemodus

FileWriter fileWriter = new FileWriter (file, true) ; 

Verwenden BufferedWriter, Sie öffnen Datei jedes Mal, wenn URL ge t zugegriffen. Versuchen Sie, den Festplatten-E/A-Overhead zu minimieren.

+0

Was ist "Disk I/O Overhead"? – Cassie

+0

Für jede URL, auf die zugegriffen wird, erstellen Sie ein neues Objekt von historyHelper und öffnen die Datei jedes Mal. Versuchen Sie also, ein Objekt zu verwenden, und verwenden Sie nur diese Referenz. –

+0

Wo füge ich diesen Code hinzu? – Cassie

Verwandte Themen