Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除一个字/行并在txt文件(Java)中用一个新字/行替换它?_Java_String_File - Fatal编程技术网

如何删除一个字/行并在txt文件(Java)中用一个新字/行替换它?

如何删除一个字/行并在txt文件(Java)中用一个新字/行替换它?,java,string,file,Java,String,File,例如,我们有一个.txt文件: 名称smth 2012年 副本1 我想用这个来代替它: 名称smth 2012年 副本0 使用java.io....逐行读取原始文本文件,并将它们分隔为以空格分隔的字符串标记以供输出,然后在找到要替换的部分(作为字符串)时,将输出替换为所需的内容。将false标志添加到filewrite对象(“filename.txt”,false)将覆盖并不会附加到文件中,从而允许您替换文件的内容。这是执行此操作的代码 try { String sCurren

例如,我们有一个.txt文件:

名称smth

2012年

副本1

我想用这个来代替它:

名称smth

2012年

副本0


使用java.io....

逐行读取原始文本文件,并将它们分隔为以空格分隔的字符串标记以供输出,然后在找到要替换的部分(作为字符串)时,将输出替换为所需的内容。将false标志添加到filewrite对象(“filename.txt”,false)将覆盖并不会附加到文件中,从而允许您替换文件的内容。

这是执行此操作的代码

try {

        String sCurrentLine;

        BufferedReader br = new BufferedReader(new FileReader("yourFolder/theinputfile.txt"));
                BufferedWriter bw = new BufferedWriter(new FileWriter("yourFolder/theinputfile.txt" , false));

        while ((sCurrentLine = br.readLine()) != null) {
            if(sCurrentLine.indexOf("Copies")>=0){
                 bw.write("Copies 0")
            }

            System.out.println(sCurrentLine);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            br.close()bw.close();

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

希望有帮助

以下是实现这一点的代码。如果你有任何问题,请告诉我

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.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.LinkedHashMap;
import java.util.Map;

public class Test2 {
    Map<String, String> someDataStructure = new LinkedHashMap<String, String>();
    File fileDir = new File("c:\\temp\\test.txt");

    public static void main(String[] args) {
        Test2 test = new Test2();
        try {
            test.readFileIntoADataStructure();
            test.writeFileFromADataStructure();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

    private void readFileIntoADataStructure() throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(
                new FileInputStream(fileDir)));
        String line;
        while ((line = in.readLine()) != null) {
            if (line != null && !line.trim().isEmpty()) {
                String[] keyValue = line.split(" ");
                // Do you own index and null checks here this is just a sample
                someDataStructure.put(keyValue[0], keyValue[1]);
            }
        }
        in.close();
    }

    private void writeFileFromADataStructure() throws IOException {
        Writer out = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream(fileDir)));
        for (String key : someDataStructure.keySet()) {
            // Apply whatever business logic you want to apply here
            myBusinessMethod(key);
            out.write(key + " " + someDataStructure.get(key) + "\n");
            out.append("\r\n");
            out.append("\r\n");
        }
        out.flush();
        out.close();
    }

    private String myBusinessMethod(String data) {
        if (data.equalsIgnoreCase("Copies")) {
            someDataStructure.put(data, "0");
        }
        return data;
    }
}
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.OutputStreamWriter;
导入java.io.Writer;
导入java.util.LinkedHashMap;
导入java.util.Map;
公共类Test2{
Map someDataStructure=newlinkedhashmap();
File fileDir=新文件(“c:\\temp\\test.txt”);
公共静态void main(字符串[]args){
Test2 test=新的Test2();
试一试{
test.readFileIntoADataStructure();
test.writeFileFlomaDataStructure();
}捕获(IOE异常){
System.out.println(e.getMessage());
}
}
私有void readFileInToAdatStructure()引发IOException{
BufferedReader in=新的BufferedReader(新的InputStreamReader(
新文件输入流(fileDir));
弦线;
而((line=in.readLine())!=null){
if(line!=null&&!line.trim().isEmpty()){
String[]keyValue=line.split(“”);
//这里有索引和空检查吗?这只是一个示例
someDataStructure.put(keyValue[0],keyValue[1]);
}
}
in.close();
}
私有void writeFileFlomaDataStructure()引发IOException{
Writer out=新缓冲写入程序(新输出流写入程序(
新的FileOutputStream(fileDir));
for(字符串键:someDataStructure.keySet()){
//在这里应用您想要应用的任何业务逻辑
myBusinessMethod(key);
out.write(key+“”+someDataStructure.get(key)+“\n”);
out.append(“\r\n”);
out.append(“\r\n”);
}
out.flush();
out.close();
}
私有字符串myBusinessMethod(字符串数据){
if(data.equalsIgnoreCase(“副本”)){
someDataStructure.put(数据,“0”);
}
返回数据;
}
}

逐行读取原始文本文件,并将其复制到具有替换值的新文本文件中。然后用修改过的副本替换原始文件。使用哪种方法??