2012-02-06 140 views
0

我想从文本文件中删除一个字符串。我已经看到我需要一个临时文件来做到这一点。我想从list.txt文件读取并删除一个字符串。我希望搜索的文件已经被创建和填充,我已经看到其他文章,并试图将其修改为我自己的个人项目。目前,我有:从文本文件中删除字符串Android - 文件IO

 package com.nullwall.listmanager; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 

public class IPR3Activity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     DoWork("TestString"); 
    } 


public void DoWork(String deleteFromFile) 
{ 
    try{ 
    String delete = deleteFromFile; 
    String line; 

    //locates a new file named list.txt 
    File root = new File(Environment.getExternalStorageDirectory(),"projects"); 
    File file = new File(root, "list.txt"); 

    //creates buffers 
    BufferedReader bufferedReader = new BufferedReader(new FileReader(file.getAbsolutePath())); 
    StringBuffer stringBuffer = new StringBuffer(); 

    //Loads list.txt into bufferedReader, deletes line and moves on 
    while ((line = bufferedReader.readLine()) != null) 
    { 
     if (line.equals(deleteFromFile)) 
     { 
     line.replace(deleteFromFile, ""); 
     stringBuffer.append("\n");  
     } 
     else 
     { 
     stringBuffer.append(line); 
     stringBuffer.append("\n"); 
     } 
    } 
    //Entire file has now been loaded into memory 

    //creates new Filewriter, append to false, rewrites list.txt with stringBuffer minus string 
    FileWriter writer = new FileWriter(file, false); 
    writer.write(stringBuffer.toString()); 
    System.out.println("file written"); 

    //closes writer 
    writer.flush(); 
    writer.close(); 


    } 
    catch (FileNotFoundException ex) { 
     ex.printStackTrace(); 
     } 
     catch (IOException ex) { 
     ex.printStackTrace(); 
     } 

} 


} 

我与随机字符串LIST.TXT这样的:

notstring 
notstring 
notstring 
teststring 
notstring 
notstring 

运行后,没有任何反应。我很喜欢这样做File IO,所以请不要忽略我可能错过的简单事情。谢谢!

回答

0

尝试将文件存储到字符串缓冲区中替换您想要替换的文件,然后完全替换文件的内容。另外还有一点是File IO在android中不一定是一样的。由于android使用上下文,文件IO的方法不同。检查开发网站的更多信息从Android的文件IO。

+0

编辑我的文章与您的建议...仍然没有被编辑。我是否正确编写代码?我在思考过程中添加了评论。 – PeterL 2012-02-06 18:23:18