设计并实现一个Java程序ReplaceText,使其: -可以将一个文档中的特定字符串替换为另外一个给定字符串; -原来的文档内容不受影响,替换后的内容保存在新的文件中; 原来的文件、目标文件、要替换的字符串、替换的目标字符串都通过命令行参数传入
时间: 2023-08-31 12:33:30 浏览: 108
### 回答1:
以下是一个简单的实现,可以通过命令行参数传入原文件路径、目标文件路径、要替换的字符串和替换的目标字符串。请注意,此实现假定要替换的字符串唯一出现在原文件中。如果要替换多个字符串,需要进行修改。
```java
import java.io.*;
public class ReplaceText {
public static void main(String[] args) {
if (args.length != 4) {
System.out.println("Usage: java ReplaceText sourceFile targetFile oldStr newStr");
System.exit(1);
}
// 获取命令行参数
String sourceFile = args[0];
String targetFile = args[1];
String oldStr = args[2];
String newStr = args[3];
// 读取原文件并进行替换
try (BufferedReader reader = new BufferedReader(new FileReader(sourceFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(targetFile))) {
String line;
while ((line = reader.readLine()) != null) {
line = line.replace(oldStr, newStr);
writer.write(line);
writer.newLine();
}
System.out.println("Replacement complete!");
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
}
}
```
使用示例:
```
java ReplaceText /path/to/source.txt /path/to/target.txt oldString newString
```
其中 `/path/to/source.txt` 是原文件路径,`/path/to/target.txt` 是目标文件路径,`oldString` 是要替换的字符串,`newString` 是替换的目标字符串。
### 回答2:
可以使用Java的IO流和字符串处理方法来实现这个程序。首先,我们需要通过命令行参数获取原来的文件路径、目标文件路径、要替换的字符串和替换的目标字符串。然后,我们可以使用BufferedReader和BufferedWriter来读取和写入文件。
程序的大致逻辑如下:
1. 获取命令行参数,包括原来的文件路径、目标文件路径、要替换的字符串和替换的目标字符串。
2. 创建一个BufferedReader对象,用于读取原来的文件。
3. 创建一个BufferedWriter对象,用于写入目标文件。
4. 通过循环逐行读取原来的文件内容,使用String的replace方法将要替换的字符串替换为替换的目标字符串。
5. 将替换后的内容写入目标文件。
6. 关闭读写流。
这样,通过ReplaceText程序,我们可以将一个文档中的特定字符串替换为另外一个给定字符串,同时原来的文档内容不受影响,替换后的内容保存在新的文件中。
以下是一个示例的Java代码实现:
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ReplaceText {
public static void main(String[] args) {
if (args.length != 4) {
System.out.println("请提供原文件路径、目标文件路径、要替换的字符串和替换的目标字符串作为命令行参数");
return;
}
String originalFilePath = args[0];
String targetFilePath = args[1];
String replaceString = args[2];
String replaceTargetString = args[3];
BufferedReader reader;
BufferedWriter writer;
try {
reader = new BufferedReader(new FileReader(originalFilePath));
writer = new BufferedWriter(new FileWriter(targetFilePath));
String line;
while ((line = reader.readLine()) != null) {
line = line.replace(replaceString, replaceTargetString);
writer.write(line);
writer.newLine();
}
writer.flush();
reader.close();
writer.close();
System.out.println("替换完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
通过命令行输入类似于下面的命令:
```
java ReplaceText original.txt target.txt replace_this with_this
```
其中,`original.txt`是原来的文件路径,`target.txt`是目标文件路径,`replace_this`是要替换的字符串,`with_this`是替换的目标字符串。执行程序后,将会生成目标文件`target.txt`,其中原来的文件`original.txt`中的字符串`replace_this`会被替换为`with_this`。
### 回答3:
设计并实现一个Java程序ReplaceText,满足以下需求:原来的文件、目标文件、要替换的字符串、替换的目标字符串都通过命令行参数传入。
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ReplaceText {
public static void main(String[] args) {
// 命令行参数传入要替换的文件路径、目标文件路径、要替换的字符串、替换的目标字符串
if (args.length != 4) {
System.out.println("参数个数不正确!");
return;
}
String filePath = args[0]; // 原文件路径
String targetFilePath = args[1]; // 目标文件路径
String replaceStr = args[2]; // 要替换的字符串
String targetStr = args[3]; // 替换的目标字符串
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(targetFilePath))) {
String line;
while ((line = bufferedReader.readLine()) != null) {
// 在每一行中替换字符串
String replacedLine = line.replace(replaceStr, targetStr);
bufferedWriter.write(replacedLine);
bufferedWriter.newLine();
}
} catch (IOException e) {
System.out.println("文件读写出错:" + e.getMessage());
}
}
}
```
该程序通过命令行参数传入需要替换文本的文件路径、目标文件路径、要替换的字符串和替换的目标字符串。使用BufferedReader读取原文件的内容,逐行替换字符串并写入到BufferedWriter中,最后关闭文件流。原来的文件内容不受影响,替换后的内容保存在新的文件中。
阅读全文