0
두 개의 텍스트 파일을 하나의 파일에서 제거한 후 결합하는 프로그램을 만들려고합니다. (나는 2 개의 질문과 대답 목록을 가지고 있으며 두 파일 모두에서 모든 질문을 얻고 싶습니다) 하지만 다음 코드를 사용하면 줄에 따라 답을 일치시키기 전에 질문을 분류하지 않습니다.파일 결합기가 동일한 출력을 얻지 못함
import java.util.Scanner;
import java.io.File;
import java.util.List;
import java.util.LinkedList;
import java.nio.file.Files.*;
import java.nio.file.Paths;
import java.nio.file.*;
import java.util.Set;
import java.util.HashSet;
import java.nio.charset.Charset;
class Main{
public static List fileToList(String path){
Scanner scanner = openFile(path);
List<String> list = loadFile(scanner);
closeFile(scanner);
return list;
}
public static Scanner openFile(String path){
Scanner scanner = null;
try{
scanner = new Scanner(new File(path),"ISO-8859-1");
}catch(Exception e){ e.printStackTrace(); }
return scanner;
}
public static List loadFile(Scanner scanner){
List<String> list = new LinkedList<String>();
while(scanner.hasNextLine()){
list.add(scanner.nextLine());
}
return list;
}
public static void closeFile(Scanner scanner){
scanner.close();
}
public static Set fileCombiner(List<String> list1 , List<String> list2){
for(int i = 0; i < list1.size(); i++){
for(int c = 0; c < list2.size(); c++){
if(list1.get(i).equals(list2.get(c))){
if(list1.size() > list2.size())
list1.remove(i);
else
list2.remove(c);
}
}
}
//COMBINING TRIMMED FILES
Set<String> set1 = null;
if(list1.size() > list2.size()){
list1.addAll(list2);
set1 = new HashSet<String>(list1);
}
else{
list2.addAll(list1);
set1 = new HashSet<String>(list2);
}
return set1;
}
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("Enter name of file 1: ");
String name1 = input.next();
System.out.print("Enter name of file 2: ");
String name2 = input.next();
String path1 = name1 + ".txt";
String path2 = name2 + ".txt";
List<String> list1 = fileToList(path1);
List<String> list2 = fileToList(path2);
Set set1 = fileCombiner(list1,list2);
Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
try{
Files.write(Paths.get("GENERATED.txt"),set1,ISO_8859_1);
}catch(Exception e){}
}
}