删除字符串(新) 【问题描述】 编写程序将一个指定文件中给定字符串删除。假设给定的字符串长度不超过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中。 【评分标准】 该题要求得到删除给定字符串后的文件内容。 【代码实现】 package JavaXiTi; import java.util.Scanner; import java.io.*; public class Delete { public static void main(String[] args){ Scanner input=new Scanner(System.in); String ini=input.nextLine(); File file=new File("filein.txt"); File file1=new File("fileout.txt"); InPuts inPut=new InPuts(); inPut.getIn(file); Modifys modify=new Modifys(); modify.setNum(ini); OutPuts outPut=new OutPuts(file1); outPut.result(); } } //使用FileInputStream读取文件内容 class InPuts{ static String s=""; void getIn(File file) { try { FileInputStream fileInputStream = new FileInputStream(file); byte buf[] = new byte[fileInputStream.available()];//返回可以从输入流中读取而不会阻塞的估计剩余字节数。此方法返回要从文件中读取的剩余字节数。当一个文件被完全读取时,这个函数返回零。 fileInputStream.read(buf);//创建一个文件大小一样的缓冲区 s = new String(buf);//将存在byte型数组中的数据转化为字符串 fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } public String geT(){ return s; } } //字符串中字符的删除 class Modifys extends InPuts{ String ini; void setNum(String ini){ this.ini=ini; int m=ini.length(); for (int i=m;i<s.length();i++){ if (s.substring(i-m,i).equalsIgnoreCase(ini)){//比较时忽略大小写 s=s.replace(s.substring(i-m,i),""); } } } void getNum(){ System.out.println(s); } } //使用FileOutputStream将修改后的内容写入新文件 class OutPuts extends Modifys{ OutPuts(File file1) { try { FileOutputStream fileOutputStream = new FileOutputStream(file1); for (int i = 0; i < s.length(); i++) { fileOutputStream.write(s.charAt(i)); } } catch ( IOException e) { e.printStackTrace(); } } void result(){ System.out.println(s); } } |