在今天的每日java时,再次碰到从文件中读取输入并输出到文件中的题目,于是便索性了解了一下这种输入输出方式,本博客以作记录。
具体题目如下
【问题描述】
编写程序将一个指定文件中给定字符串删除。假设给定的字符串长度不超过20,文件中每行的字符数不超过100。要求:给定的字符串大小写无关。
【输入形式】
给定文件名为filein.txt。从标准输入中输入要删除的字符串(不含空格)。
【输出形式】
将删除后的结果输出到文件fileout.txt中。
【样例输入】
从标准输入中输入要删除的字符串:
in
文件filein.txt的内容为:
#include <stdio.h>
void main()
{
FILE * IN;
if((IN=fopen("in.txt","r"))==NULL)
{
printf("Can’t open in.txt!");
return;
}
fclose(IN);
}
【样例输出】
文件fileout.txt的内容应为:
#clude <stdio.h>
void ma()
{
FILE * ;
if((=fopen(".txt","r"))==NULL)
{
prtf("Can’t open .txt!");
return;
}
fclose();
}
【样例说明】
输入的要删除的字符串为in,即将文件filein.txt中所有出现的in字符串(包括iN、In、IN字符串)删除,然后将删除后的文件内容输出保存在文件fileout.txt中。
【评分标准】
该题要求得到删除给定字符串后的文件内容。
题目要求很明显,删除实现不难。代码如下:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class everydayjava {
public static void main(String[] args) {
try {
// 从标准输入中读取要删除的字符串
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String stringToRemove = reader.readLine();
reader.close();
// 打开文件filein.txt进行读取
BufferedReader fileReader = new BufferedReader(new FileReader("filein.txt"));
// 创建文件fileout.txt进行写入
BufferedWriter fileWriter = new BufferedWriter(new FileWriter("fileout.txt"));
String line;
while ((line = fileReader.readLine()) != null) {
// 不区分大小写删除指定字符串
line = line.replaceAll("(?i)" + stringToRemove, "");
fileWriter.write(line);
fileWriter.newLine();
}
fileReader.close();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
下面便讲到所导入的java.io包中的每一个类的作用
读取/写入文本(BufferedReader
和BufferedWriter
类)
在java.io包中,import java.io.BufferedReader和import java.io.BufferedWriter;用于高效的读取和写入文本,它提供了缓冲区来提高写入性能,在有大量文本时作用明显。
导入/导出(FileReader
和FileWriter
类)
import java.io.FileReader和import java.io.FileWriter;用于引入文件中的数据并将字符数据写入文件中。
处理异常(IOException
类)
使用try-catch块
用于处理输入/输出操作可能出现的异常的类。在文件操作中,可能会出现各种I/O相关的异常,例如文件不存在、权限问题等,而IOException
类用于捕获和处理这些异常。
读取用户语句(InputStreamReader
类)
InputStreamReader
通常用于从输入流(例如标准输入流System.in
)中读取字符数据。
如有错误,欢迎大佬们指正