Member 13980253 Ответов: 0

Как разделить файл на основе столбца с помощью нескольких потоков в java


Для проекта, над которым я работаю, я пытаюсь разделить текстовый файл на несколько файлов на основе столбца с несколькими потоками..
у меня есть текстовый файл с 10 столбцами и 10000000 строками..
мне нужно разделить текстовый файл на основе имени столбца, то есть города.
Я попробовал программу, в которой я успешно разделяю файл на основе имени столбца..
Но мне нужно написать программу с несколькими потоками..
я очень новичок в java.. это моя задача
Пожалуйста....Пожалуйста ... кто-нибудь, помогите мне с этим..


заранее спасибо :)

Что я уже пробовал:

открытый класс FileSplitter2 {

public static void main(String[] args) вызывает исключение IOException {

Строки путь_к_файлу = "D:\\sample\\file.txt";
Командой bufferedreader читатель = читает(новый FileReader(путь_к_файлу));
Строка strLine;
boolean isFirst = true;
String strGroupByColumnName = "город";
int positionOfHeader = 0;
Файловая машина objFileWriter;
Карта&ЛТ;строку, записывает&ГТ; groupByMap = новый HashMap и Л;строку, записывает&ГТ;();
while ((strLine = reader.readLine()) != null) {
Строка[] разбиты = strLine.сплит(",");
если (сначала) {
сначала = ложь;
for (int i = 0; i < splitted.длина; i++) {
if (splitted[i].equalsIgnoreCase(strGroupByColumnName)) {
positionOfHeader = я;
перерыв;
}
}
}
String strKey = splitted[positionOfHeader];
if(!groupByMap.containsKey(strKey)) {
groupByMap.put(strKey, new FileWriter("D:/TestExample/" + strKey + ".txt"));
}
Автоматически записывает = groupByMap.вам(strKey);
fileWriter.write(strLine + "\n");
}

для (Map.Entry<String, FileWriter> entry : groupByMap.entrySet()) {
запись.getKey();
}
groupByMap.значения().по каждому элементу(автоматически -&ГТ; {
пробовать {
автоматически.рядом();
}
catch (IOException e) {
е.печатные();
}
});

}
}

Richard MacCutchan

В чем именно заключается ваш вопрос?

Member 13980253

Мне нужно разделить текстовый файл на 10 отдельных файлов с помощью нескольких потоков..

Richard MacCutchan

Да, вы это уже говорили. Но вы не объяснили, в чем заключается проблема с точки зрения того, что вы не можете сделать, или что не работает и т. д. И прежде чем вы начнете работать с потоками, вы должны быть уверены, что это лучшее решение проблемы.

Member 13980253

Я немного сбит с толку, просто знаю, что начал кодировать, и моя задача-работать с несколькими потоками. Не могли бы вы предложить мне какую-нибудь идею, или я был бы благодарен, если бы вы помогли мне в кодировании . Действительно ли использование нескольких потоков-это хорошая идея для разделения файла.. я знаю, что использование нескольких потоков может замедлить выполнение. но мне нужно иметь дело только с нитями :(

Member 13980253

Я не могу разделить файл с несколькими потоками..

Richard MacCutchan

Вы смотрите на проблему не с того конца. Можете ли вы быть уверены, что использование нескольких потоков-это правильный способ сделать это? Первый вопрос заключается в том, как разделить данные на отдельные столбцы. Должны ли вы сделать это все сразу и создать 10 списков или по одной строке за раз и передать каждый элемент в действие писателя? Как только вы это поняли, вы можете продолжить, чтобы увидеть, как использование потоков может улучшить общую производительность. Но как вы собираетесь передавать данные в каждый поток? Как вы можете видеть, есть довольно много вопросов, которые следует рассмотреть, прежде чем начать писать какой-либо код.

0 Ответов