Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - [решено] Чтение из текстового файла строковых данных в двумерный массив java8

Ответить
Настройки темы
Java - [решено] Чтение из текстового файла строковых данных в двумерный массив java8

Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Собственно как это сделать?
Scanner использовать или reader или что?
Использовать List<List<Double>> matr = new LinkedList<>(); для подсчёта строк в файле?
Сильно не пинайте, но только начинаю изучать.
Выручайте, ребята.
Как вариант считать в одномерный, а потом переделать в двумерный массив с использованием регулярки

Отправлено: 15:05, 23-05-2017

 

Аватара для shisik

Ветеран


Сообщения: 3247
Благодарности: 596

Профиль | Отправить PM | Цитировать


То есть результатом должен быть двумерный массив чаров? Ну тогда можно считывать построчно и каждую строку разбирать на символы. Считывать построчно можно, например, вот так.

Отправлено: 16:50, 24-05-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата shisik:
То есть результатом должен быть двумерный массив чаров? Ну тогда можно считывать построчно и каждую строку разбирать на символы. Считывать построчно можно, например, вот так.
Код: Выделить весь код
try {
                    Path path = Paths.get(pathStatfile);
                    String[][] array = Files.lines(path)
                            .map(s -> s.split("^(.)\\s(\\d+)\\s(\\d+)\\s(\\d+)$"))
//                            .map(s -> s.split(" "))
                            .toArray(String[][]::new);
                    System.out.println(Arrays.toString(array));
                } catch (IOException e1) {
                }
Но тут какая то беда с регуляркой
А вот пример строк в файле
Код: Выделить весь код
system/lost+found 0 0 770
system/app 0 0 755
system/app/AnalyticsCore 0 0 755
system/app/AnalyticsCore/AnalyticsCore.apk 0 0 644
system/app/AnalyticsCore/oat 0 0 755
system/app/AnalyticsCore/oat/arm64 0 0 755
system/app/AnalyticsCore/oat/arm64/AnalyticsCore.odex 0 0 644
system/app/AntHalService 0 0 755
system/app/AntHalService/AntHalService.apk 0 0 644
system/app/AntHalService/oat 0 0 755
system/app/AntHalService/oat/arm64 0 0 755
system/app/AntHalService/oat/arm64/AntHalService.odex 0 0 644

Отправлено: 21:03, 24-05-2017 | #3


Аватара для shisik

Ветеран


Сообщения: 3247
Благодарности: 596

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
Но тут какая то беда с регуляркой »
Разумеется. Не стоит же квантификатор для первой группы, поэтому она соответствует одному любому символу. Я имею в виду "^(.)\\s(\\d+)\\s(\\d+)\\s(\\d+)$" Нужно заменить на (.+?) и тогда должно сооветствовать строкам в файле.

Отправлено: 21:38, 24-05-2017 | #4


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата shisik:
Цитата blackeangel:
Но тут какая то беда с регуляркой »
Разумеется. Не стоит же квантификатор для первой группы, поэтому она соответствует одному любому символу. Я имею в виду "^(.)\\s(\\d+)\\s(\\d+)\\s(\\d+)$" Нужно заменить на (.+?) и тогда должно сооветствовать строкам в файле.
Увы, фокус не удался. Ещё есть догадки?

Отправлено: 22:23, 24-05-2017 | #5


Аватара для shisik

Ветеран


Сообщения: 3247
Благодарности: 596

Профиль | Отправить PM | Цитировать


blackeangel, предлагаю разбить цепочку вызовов

Код: Выделить весь код
String[][] array = Files.lines(path)
.map(s -> s.split("^(.)\\s(\\d+)\\s(\\d+)\\s(\\d+)$"))
.toArray(String[][]::new);
на отдельные операции и смотреть результат каждой.

Отправлено: 22:26, 24-05-2017 | #6


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


shisik, на бейсике было так
Код: Выделить весь код
"^(.+) (\d+) (\d+) (\d+)(?:| (.+))$"
и все прекрасно работало. На java что-то не катит.

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 22:41, 24-05-2017 | #7


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата shisik:
на отдельные операции и смотреть результат каждой. »
это как сделать?

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 23:09, 24-05-2017 | #8


Аватара для shisik

Ветеран


Сообщения: 3247
Благодарности: 596

Профиль | Отправить PM | Цитировать


Ну а если так?

Код: Выделить весь код
split("\\s")
Так должно работать с пробелами в именах файлов:

Код: Выделить весь код
split("\\s(?=\\d+(?:\\s\\d+)?(?:\\s\\d+)?$)")

Последний раз редактировалось shisik, 24-05-2017 в 23:25.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:15, 24-05-2017 | #9


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


shisik,
Код: Выделить весь код
split("\\s") = split(" ")
Что не есть хорошо.
А вот второй вариант попробую.

Отправлено: 05:57, 25-05-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - [решено] Чтение из текстового файла строковых данных в двумерный массив java8

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - VBScript написать функции считывания таблицы данных из текстового файла evgenmsch@vk Скриптовые языки администрирования Windows 3 18-02-2014 07:20
CMD/BAT - Сборка текстового файла из содержимого другого текстового файла icomboy Скриптовые языки администрирования Windows 0 10-09-2013 15:17
CMD/BAT - [решено] Чтение содержимого текстового файла в переменную kosmopes Скриптовые языки администрирования Windows 2 11-03-2011 12:58
[решено] Чтение текстового файла с неизвестным именем ZeroCrash AutoIt 4 01-07-2009 19:03
Shell. Чтение текстового файла по строкам. Delphin911 Общий по Linux 11 07-04-2005 17:58




 
Переход