#java #performance #csv
#java #Производительность #csv
Вопрос:
csv-файл 1:
a|b|c
a|a|a
b|b|b
csv-файл 2:
a|b|c
c|c|c
d|d|d
выходной csv-файл:
a|b|c
a|a|a
b|b|b
c|c|c
d|d|d
вот мой код, который я пытался объединить, но заголовок повторяется дважды:
и когда дело доходит до объединения двух файлов в один альтернативный csv-файл, я также сталкиваюсь с той же проблемой, что и выше, столбцы заголовка повторяются каждый раз, что я должен делать, чтобы игнорировать это.
вот мой код ниже
public static void main(String[] args) throws IOException
{
// PrintWriter object for file3.txt
PrintWriter pw = new PrintWriter("file3.txt");
// BufferedReader object for file1.txt
BufferedReader br1 = new BufferedReader(new FileReader("file1.txt"));
BufferedReader br2 = new BufferedReader(new FileReader("file2.txt"));
String line1 = br1.readLine();
String line2 = br2.readLine();
// loop to copy lines of
// file1.txt and file2.txt
// to file3.txt alternatively
while (line1 != null || line2 !=null)
{
if(line1 != null)
{
pw.println(line1);
line1 = br1.readLine();
}
if(line2 != null)
{
pw.println(line2);
line2 = br2.readLine();
}
}
pw.flush();
// closing resources
br1.close();
br2.close();
pw.close();
как пропустить столбец заголовка в выходном файле
Комментарии:
1. Итак, вам нужен файл, содержащий только уникальные строки всех входных файлов?
2. Отсортированы ли входные файлы? Важен ли порядок строк в выходном файле?
3. нет, порядок не важен, но данные не следует пропускать, если у них есть дубликаты, их не следует пропускать
4. я добавил другой код с двумя файлами, объединенными в один файл, также возникает та же проблема, как игнорировать столбец заголовка
Ответ №1:
Просто пропустите первые строки второго и последующих CSV-файлов:
for (int i = 0; i < fileNames.length; i ) {
System.out.println("Reading from " fileNames[i]);
File f = new File(dir, fileNames[i]);
BufferedReader br = new BufferedReader(new FileReader(f));
String line = br.readLine();
if (i > 0)
line = br.readLine(); //just skip the first line
while (line != null) {
pw.println(line);
line = br.readLine();
}
pw.flush();
}