Предположим, у нас есть два файла как f1 and f2.
Также предположим, что есть функция с именем comparision(File f1,File f2)
.Эта функция получает два файла в качестве аргументов и берет первый символ (слово) из f1 и сравнивает его со всеми символами в f2 до конца, выбирает вторые и делает до конца как первый и т. Д.
Мой вопрос: как я могу это реализовать?Нужно ли знать EOF?И если да, то как его получить?
Предположим, что файлы представляют собой простой текст (.txt)
, и каждое слово находится в одной строке.в качестве примера:
f1:
I
am
new
to
java
f2:
java
is
a
programing
language
Вот код:
static void comparision(File f, File g) throws Exception
{
Set<String> text = new LinkedHashSet<String>();
BufferedReader br = new BufferedReader(new FileReader(g));
for(String line;(line = br.readLine()) != null;)
text.add(line.trim().toString());
if(text==null)
return;
BufferedReader br = new BufferedReader(new FileReader(f));
String keyword = br.readLine();
if (keyword != null) {
Pattern p = Pattern.compile(keyword, Pattern.CASE_INSENSITIVE);
StringBuffer test = new StringBuffer(text.toString());
matcher = p.matcher(test);
if (!matcher.hitEnd()) {
total++;
if (matcher.find()) {
//do sth
}
}
}
}
edit by jcolebrand
Что-то, о чем нужно подумать, нам нужен поток программ, который выглядит следующим образом (psuedocode)
function(file1,file2) throws exceptions{
ArrayList<string> list1, list2; //somebody said we should use an ArrayList ;-)
string readinTempValue = null;
br = BufferedReader(file1) //we are already using a BufferredReader
readinTempValue = br.ReadLine();
//this is a loop structure
while (readinTempValue != null){ //trust me on this one
//we need to get the string into the array list....
//how can we ADD the value to list1
readinTempValue = br.ReadLine(); //trust me on this one
}
br = BufferedReader(file2) //we are already using a BufferredReader
readinTempValue = br.ReadLine();
//this is a loop structure
while (readinTempValue != null){ //trust me on this one
//we need to get the string into the array list....
//how can we ADD the value to list2
readinTempValue = br.ReadLine(); //trust me on this one
}
foreach(value in list1){
foreach(value in list2){
compare value from list 1 to value from list 2
}
}
}