Java,读取两个文件A,B并且进行处理,把B里所有包含A内容的字符全去掉....好的追分,求高手指点,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java,读取两个文件A,B并且进行处理,把B里所有包含A内容的字符全去掉....好的追分,求高手指点,谢谢相关的知识,希望对你有一定的参考价值。

具体问题是这样的, 读取一个文件A,把A的内容存储在内存里(比如一个ArrayList<String>),然后再读取一个文件B, 并且把文件B里所有在文件A里出现过的单词都去掉, 把剩下的内容生成一个新文件C. 大小写不重要.

比如A是abc B是 abc acc 那输出的C就是 acc.

我写了个开头,但是实在不知道怎么样把A存储起来和比较字符然后去掉某些字符....求高人补全并指点,见笑了..

(各种import)

File inFile = new File(args[0]);
Scanner scan = new Scanner(inFile);//读取文件A,相同的方法读取B

File outFile = new File(args[2]);
PrintWriter pw = new PrintWriter(outFile);//输出文件C

while (scan.hasNextLine())
String line = scan.nextLine(); // 我准备用这个来逐行扫描文件

然后就一团迷糊了....求老师啊!! 好的追分,本来我记得能悬赏200的怎么现在最高只有100了,先谢谢了!!!!!!

你的看着很混乱,思路不清楚。思路理清后,读写文件都很简单的。A,B 文件内文件格式不知道,找出其中的单词复杂一点。为了简单下面代码假设A B中的单词之间只有一个都空格无其它标点。
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.util.ArrayList;

public class UnioFile
public static String readFile(String path)
File file=new File(path);
String str="";
try
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
while(true)
String s=br.readLine();
str=s+str;
if(s==null)
break;

br.close();
return str;
catch (IOException e)
e.printStackTrace();

return null;

public static void writeFile(String s,String path)
File file=new File(path);
try
BufferedWriter ow=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
ow.write(s);
ow.flush();
ow.close();
catch (IOException e)
e.printStackTrace();


public static String word(String s1,String s2)
String s="";
String[]str1=s1.split(" ");
String[]str2=s2.split(" ");
ArrayList<String> list1=new ArrayList<String>();
ArrayList<String> list2=new ArrayList<String>();
for(int i=0;i<str1.length;i++)
list1.add(str1[i]);
for(int i=0;i<str2.length;i++)
list2.add(str2[i]);

for(int i=0;i<list2.size();i++)
if(!list1.contains(list2.get(i)))
list1.add(list2.get(i));

for(int i=0;i<list1.size();i++)
s=s+list1.get(i)+“ ”;
return s;

public static void main(String []args)
String a="a.txt";
String b="b.txt";
String c="c.txt";
String s1=readFile(a);
String s2=readFile(b);
String s3=word(s1,s2);
writeFile(s3,c);


有问题就追问,满意请采纳。追问

谢谢大神啊!!!肯定是你的.... 是的就假设A和B全是单词和空格好了..... 不过前两个class, readfile和writefile 能不能不用BufferedReader/BufferedWriter? 改成 File inFile = new File(args[0]) 然后运行前输入args[0]为A.txt可以吗?

追答

args[0]可以运行前输入。不用BufferedReader/BufferedWriter也可以,读写文本文件的流很多比如上面你的PrintWriter/PrintWriter、BufferedInputStream/BufferedInputStream、FileOutputStream/FileInputStream、FileWriter/FileReader等等,具体用法可以看API或百度。方法都差不多,就是嵌套流的方式不一样。
readfile和writefile 能不能不用BufferedReader/BufferedWriter? 改成File inFile = new File(args[0]) 把BufferedReader/BufferedWriter 改为 File? File 类不可以对文件进行读写,只能查看文件的一些属性和供读写文件流的使用。主函数改为:
String s1=readFile(args[0]);
String s2=readFile(args[1]);
String s3=word(s1,s2);
writeFile(s3,c);
在运行前输入 A,B文件绝对路径

参考技术A 给你代码,
a.txt abc acc Abc
b.txt abc
c.txt acc Abc
如果 Abc也是不想要的,那还需要进一步的处理。
单诩之间要有空格

发贴时最高是100分,可以后续追加分,
如有问题再联系。

----------------------------------------------------------------------------------------
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class T

public static void main(String[] args) throws Exception
File afile = new File("D:\\a.txt");
File bfile = new File("D:\\b.txt");
File cfile = new File("D:\\c.txt");
Scanner sc = new Scanner(afile);
List<String> alist = new ArrayList<String>();
while (sc.hasNext())
alist.add(sc.next());

sc = new Scanner(bfile);
while (sc.hasNext())
String str = sc.nextLine();
if (alist.contains(str))
alist.remove(str);



FileWriter fw = new FileWriter(cfile);
for (int i = 0; i < alist.size(); i++)
fw.write(alist.get(i) + " ");


fw.close();

如何用python把多个csv文件数据处理后汇总到新csv文件

首先我有50个csv,分别以20190101,20190102这种时间格式命名;其次每个csv表格里有N个人的数据 (N<200),A列是速度(米每秒),B列数是时间(单位秒);然后我要统计每个csv里,A列和B列的乘积大于1000米的人的个数;最后在一个新的csv表里A列输出50个csv的名字,B列输出对应日期里大于1000米的人的个数。请教各位大神,如何用python来实现?

可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循环读取,在对读取到的数据处理一下,判断大于1000米的个数,大循环外面定义两广序列,存放文件名和个数,大循环结束后将两广数组组成Dataframe保持到一个新csv里,思路大概是这样。不明白的可以继续问。 参考技术A

本回答被提问者和网友采纳

以上是关于Java,读取两个文件A,B并且进行处理,把B里所有包含A内容的字符全去掉....好的追分,求高手指点,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

用C++写的二进制文件,用JAVA怎么读取?

用C++写的二进制文件,用JAVA怎么读取?

php使用cURL读取XML字节

如何把批处理文件里面输出的内容输出到文本

JAVA中如何同时访问两种数据库

java 20 - 7 字节输入流的操作