如何删除一个字/行并在txt文件(Java)中用一个新字/行替换它?
例如,我们有一个.txt文件: 名称smth 2012年 副本1 我想用这个来代替它: 名称smth 2012年 副本0如何删除一个字/行并在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
使用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”);
}
返回数据;
}
}
逐行读取原始文本文件,并将其复制到具有替换值的新文本文件中。然后用修改过的副本替换原始文件。使用哪种方法??