写一程序将一个文件fin.txt拷贝至另一个文件fout.txt, 其中在所拷贝的文件中, 多个连续空格只拷贝一个空格, 制表符则用一个空格代替, 其它字符不变。 其中fin.txt和fout.txt文件都在当前目录下。 注意:java源文件与fin.txt一起压缩提交。 程序中的部分代码可编写如下: FileReader fr = new FileReader("fin.txt"); ...... int i = fr.read(); ...... if((char)i==' '||(char)i=='\t') {......}
时间: 2024-02-06 17:09:08 浏览: 65
以下是Java代码实现:
```java
import java.io.*;
public class CopyFile {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("fin.txt");
FileWriter fw = new FileWriter("fout.txt");
int i = fr.read();
boolean lastCharIsSpaceOrTab = false; // 上一个字符是否为空格或制表符
while (i != -1) {
char c = (char) i;
if (c == ' ') {
if (!lastCharIsSpaceOrTab) {
fw.write(c);
}
lastCharIsSpaceOrTab = true;
} else if (c == '\t') {
if (!lastCharIsSpaceOrTab) {
fw.write(' ');
}
lastCharIsSpaceOrTab = true;
} else {
fw.write(c);
lastCharIsSpaceOrTab = false;
}
i = fr.read();
}
fr.close();
fw.close();
System.out.println("文件拷贝成功!");
} catch (IOException e) {
System.out.println("文件拷贝失败:" + e.getMessage());
}
}
}
```
该程序首先创建一个 FileReader 对象来读取 fin.txt 文件,然后创建一个 FileWriter 对象来写入 fout.txt 文件。
在读取每个字符时,如果当前字符是空格或制表符,就判断上一个字符是否也是空格或制表符,如果是,则跳过,否则将一个空格写入 fout.txt 文件,并将 lastCharIsSpaceOrTab 设置为 true。如果当前字符不是空格或制表符,则将它写入 fout.txt 文件,并将 lastCharIsSpaceOrTab 设置为 false。
最后,关闭 FileReader 和 FileWriter 对象,并输出拷贝成功的信息。如果发生任何异常,则输出拷贝失败的信息。
阅读全文