powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Чтение из текстового файла строковых данных в двумерный массив
78 сообщений из 78, показаны все 4 страниц
Чтение из текстового файла строковых данных в двумерный массив
    #39457826
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно как это сделать?
Scanner использовать или reader или что?
Использовать List<List<Double>> matr = new LinkedList<>(); для подсчёта строк в файле?
Сильно не пинайте, но только начинаю изучать.
Выручайте, ребята.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39457832
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вариант считать в одномерный, а потом переделать в двумерный массив с использованием регулярки.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39457851
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
java8?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39457858
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry.,

Да
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39457886
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
www.sql.ru/forum/1077806-1/bystroe-chtenie-i-razbor-fayla
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39457889
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelScanner использовать или reader или что?
Scanner-у скармливаете ваши разделители (пробел и перенос строки?) и вычитывается им целиком числа.
Меньше лени, больше кода и деталей.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39458731
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Files.lines.map(line->line.split("\\W+"))

?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39458776
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelBlazkowicz,

Files.lines.map(line->line.split("\\W+"))

?
Вариант.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39458874
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

А сразу прочитать и разбить регуляркой на столбцы можно как н будь?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39458900
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,

Нет такой структуры данных "столбцы" и нет такой операции "разбить". Попробуйте излагать в терминах Java.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39458927
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
А сразу прочитать файл и разделить регуляркой на 2 размерности можно как-нибудь?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39458936
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,

"сразу" я тоже считаю интересным техническим термином.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39458938
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39458950
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё про "сразу" вопрос. Как "сразу" узнать размер массива, не читая файл. Безотносительно Java.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459015
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

List не?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459161
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
вроде что то заработало
[JAVA]
try {
Path path = Paths.get(pathStatfile);
String[][] array = Files.lines(path)
.map(s -> s.split("^(.*) (\\d+) (\\d+) (\\d+)(?:| (.*))$"))
// .map(s -> s.split(" "))
.toArray(String[][]::new);
System.out.println(Arrays.toString(array));
} catch (IOException e1) {
}
[/JAVA]
но почему то все значения пустые
Что то в регулярке не то. Что именно?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459164
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
А если пишу так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
                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) {
                }


то пишет в одну строку все, то есть не делит по пробелу
А если вот так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
                try {
                    Path path = Paths.get(pathStatfile);
                    String[][] array = Files.lines(path)
                            .map(s -> s.split(" "))
                            .toArray(String[][]::new);
                    System.out.println(Arrays.toString(array));
                } catch (IOException e1) {
                }


то все верно, но если в имени файла попадется пробел то разделит на лишнюю размерность,что не нужно.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459165
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример строк из файла дай - поможем..
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459167
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Dmitry.,примерно так
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459169
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelDmitry.,примерно так
Ну, и на кой ляд тут двумерный массив, если у вас типы разные в разных колонках?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459171
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Я хочу один - текстовый, на все. Поэтому массив двумерный.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459185
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Тип берется из текстового файла, а он там текстовый, как ни странно
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459242
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel...
то все верно, но если в имени файла попадется пробел то разделит на лишнюю размерность,что не нужно.
жестоко
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459294
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelТип берется из текстового файла, а он там текстовый, как ни странно
Речь не о файле, а о структуре данных. Я вижу целые числа в вашем файле. Или это мираж?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459315
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
А что цифры невозможно хранить в текстовом типе?
На сколько помню, в старинных можно и дроби хранить. Хотя может у java есть какие-то ограничения...
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459317
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelА что цифры невозможно хранить в текстовом типе?

Можно. Но зачем? Они уже хранятся в текстовом типе в файле. Если мы их читаем из файла, то, наверное, чтобы обработать?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459318
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Хотя мне не понятно, что вы так за типы зацепились, если проблема не в типах данных, а в регулярном выражении.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459319
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Скажу так, я не буду работать с ними как с цифрами, а буду как с текстом. Так что, в этом плане, тут все хорошо.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459321
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelХотя мне не понятно, что вы так за типы зацепились, если проблема не в типах данных, а в регулярном выражении.
Нет проблемы в регулярном выражении. Есть проблема в том что существует несколько десятков способов вычитать данные из текстового файла, но не понятно какой именно вам предложить, потому что вы не способны озвучить требования.
- Производительность?
- Краткость кода?
- Необходимая структура данных в результате? То массив, то список, то снова массив. То вдруг оказалось, что на входе файл особого формата, а не так как было описано изначально.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459322
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelСкажу так, я не буду работать с ними как с цифрами, а буду как с текстом. Так что, в этом плане, тут все хорошо.
Пока не начнете сортировать.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459328
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczBlackeAngelХотя мне не понятно, что вы так за типы зацепились, если проблема не в типах данных, а в регулярном выражении.
Нет проблемы в регулярном выражении. Есть проблема в том что существует несколько десятков способов вычитать данные из текстового файла, но не понятно какой именно вам предложить, потому что вы не способны озвучить требования.
- Производительность?
- Краткость кода?
- Необходимая структура данных в результате? То массив, то список, то снова массив. То вдруг оказалось, что на входе файл особого формата, а не так как было описано изначально.
- пофиг
-пофиг
-двумерный стринговый массив
-если понадобится, то сортировка по файлам будет, но никак не по правам
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459349
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelsystem/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
Dmitry.,примерно так
пробелы в файлах исключены?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459352
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Не исключены. Все может быть.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459353
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
20509840
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459354
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel-пофиг
если всё - пофиг, то читайте построчно и распихивайте в свой массив циклом.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459357
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelPetro123,
Не исключены. Все может быть.
тогда не парь мозги и читай построчно(символ конца строки)
А на строке включай БЛ (бизнес-логику). Т.е. кавычки\пробелы\....всё_может_быть
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459367
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public class ParseFileRights {
    static final Pattern lineFormat = Pattern.compile("(.*)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)");


    public static void main(String[] args) throws Exception {
        Path file = Paths.get(args[0]);
        List<List<String>> result = Files.lines(file)
                .map(ParseFileRights::lineToRecord)
                .collect(Collectors.toList());
        System.out.println(result);
    }

    private static List<String> lineToRecord(String line){
        Matcher matcher = lineFormat.matcher(line);
        if(matcher.find()){
            List<String> record = new ArrayList<>();
            for (int i = 1; i < matcher.groupCount(); i++) {
                record.add(matcher.group(i));
            }
            return record;
        }
        throw new RuntimeException(line);
    }
}
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459692
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczНет проблемы в регулярном выражении.
Странно, тогда почему с такой регуляркой все завелось и заработало?
split("\\s(?=\\d+(?:\\s\\d+)?(?:\\s\\d+)?$)")
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459694
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Ну ещё предложите читать побайтно.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459734
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelPetro123,
Ну ещё предложите читать побайтно.
понятие "байт" в бизнес-логике списка файлов отсутствует.
Ты ещё регистр процессора предложи.
А программист, делающий не по своему же ТЗ - велосипедоМастер).
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459737
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelСтранно, тогда почему с такой регуляркой все завелось и заработало?
split("\\s(?=\\d+(?:\\s\\d+)?(?:\\s\\d+)?$)")
Это "заработало" до первого файла в имени которого числа и пробелы.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459778
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Такую строку схавал как надо
system/app/AguiAcc AndAlsps Calibration/lib/arm 6 4/libgse nsorca li_jni .so 0 0 777
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459835
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelТакую строку схавал как надо
system/app/AguiAcc AndAlsps Calibration/lib/arm 6 4/libgse nsorca li_jni .so 0 0 777
если это тест, то хотя бы выдумавыйте с приближением к реальности. Такой файл нельзя в винде создать.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39459917
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39460024
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
посыпаю голову пеплом.
В конце полного имени файла или папки пробел не разрешается.))
Перед расширением - можно.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39460026
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, не только. Двоеточия, слеши, звездочки (asterisk)
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39460031
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonPetro123, не только. Двоеточия, слеши, звездочки (asterisk)
Из ГУИ винды двоеточие нельзя, а слеши делают цепочку папок.
Звезду никогда не пробовал)).
Плюсы и запятые стало можно.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39460041
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда-то были зарезервированные имена CON, LPT, NULL их нельзя было использовать
в качестве имен файлов или каталогов (из соображений совместимости с DOS).
Как щас - не проверял. Не знаю.

Я в свое время проделал немалую работу в попытке создать из NTFS5 документо-ориентированную
БД с индексами. И все эти кейсы - как грабли. Пришлось по ним пройти.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597710
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Надеюсь скучали :-)
Итак, надо разбить на функцию и вызов функции следующий кривой код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
BufferedReader reader = null;
            ArrayList<String> result = new ArrayList<String>();
            Pattern pattern = Pattern.compile("^(.+?)\\s(\\d+)\\s(\\d+)\\s(\\d+)(?:\\s(.+?))?$");
            try {
                reader = new BufferedReader(new FileReader(pathStatfile));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            String line;
            while ((line = reader.readLine()) != null) {
                result.add(line);
            }
            String[][] statfilemass = new String[result.toArray().length][5];
            for (int i=0;i<result.toArray().length;i++){
                Matcher matcher = pattern.matcher(result.get(i).toString());
                if (matcher.find()) {
                    for (int j = 1; j <= matcher.groupCount(); ++j) {
                        statfilemass[i][j - 1] = matcher.group(j);
                    }
                }
            }
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597712
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть в том чтоб прочитать файл в двумерный массив с регуляркой. Метод такой вот для некоторых файлов вызывает ошибки.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
private static String [] parseLine(String line) {
    ArrayList<String> result = new ArrayList<String>();
    Pattern pattern = Pattern.compile("^(.+?)\\s(\\d+)\\s(\\d+)\\s(\\d+)(?:\\s(.+?))?$");
    Matcher matcher = pattern.matcher(line);
    if (matcher.find()) {
        for (int i = 1; i <= matcher.groupCount(); ++i) {
            result.add(matcher.group(i));
        }
    }
    return result.toArray(new String[0]);
}
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597714
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось какой нибудь супер супер правильный код, который бы ел все подряд и не задавал глупых вопросов.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597715
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,

У вас есть проблема - нужно разобрать файл. Вы решили использовать регулярные выражения. Теперь у вас две проблемы.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597716
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Это какие?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597718
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,

Код: java
1.
Files.lines(path).map(MyParser::parseLine).collect(toList());
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597720
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, вот именно это и вызывает ошибки.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597726
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Вот этот файл таким способом не читался у меня
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597762
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import java.io.File;
import java.util.Arrays;
import java.util.Scanner;

try (Scanner scan = new Scanner(new File("D:\\system_statfile.txt"))) {
    while (scan.hasNextLine()) {
        String[] s = scan.nextLine().split("\\s+");
        System.out.println(Arrays.toString(s));
    }
}
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597783
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman,
И при попадании в имени файла пробела, все покатится под гору. В начале этой темы уже обсуждалось, что split - не вариант.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597786
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngel,

в имени файла могут быть цифры? (вообще, в пути)
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39597803
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
try (Scanner scan = new Scanner(new File("D:\\system_statfile.txt"))) {
    while (scan.hasNextLine()) {
        String line = scan.nextLine();
        if (line.contains("lost+found")) continue;
        String[] names = line.split("(\\s\\d+)+");
        String attrs = line.split(String.join("|", names), -1)[1];
        System.out.printf("%s - %s%n", attrs, Arrays.toString(names));
    }
}
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39599468
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UsmanBlackeAngel,

в имени файла могут быть цифры? (вообще, в пути)
Естественно
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39599754
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelUsmanBlackeAngel,

в имени файла могут быть цифры? (вообще, в пути)
Естественно должно сработать
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628202
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, продолжим тему...
Собствено на 2 странице есть код, я его немного подправил и получилось что то такое
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public static String[][] parsetxtfile(String filename, String patern) {
        String[][] mass = new String[0][];
        try {
            BufferedReader reader = null;
            ArrayList<String> result = new ArrayList<String>();
            Pattern pattern = Pattern.compile(patern);
            try {
                reader = new BufferedReader(new FileReader(filename));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            String line;
            while ((line = reader.readLine()) != null) {
                result.add(line);
            }
            mass = new String[result.toArray().length][7];
            for (int i = 0; i < result.toArray().length; i++) {
                Matcher matcher = pattern.matcher(result.get(i).toString());
                if (matcher.find()) {
                    for (int j = 1; j <= matcher.groupCount(); ++j) {
                        mass[i][j - 1] = matcher.group(j);
                    }
                }
            }
        } catch (IOException e2) {
            e2.printStackTrace();
        }
        return mass;
    }


Вроде всё здорово, кроме одного НО:
Код: java
1.
 mass = new String[result.toArray().length][7];


если в функцию попадает большее кол-во matcher.group чем 7, то всё падает.
Как сделать динамически изменяемым? чтоб в зависимлсти от кол-ва matcher.group увеличивалось?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628453
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может arraylist<arraylist<string>> надо использовать? Или что? В какую сторону вообще смотреть?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628501
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelСобствено на 2 странице есть код, я его немного подправил и получилось что то такое

А почему нельзя сразу нормальный код писать а не говнокодить?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public static String[][] parsetxtfile(String filename, String patern) {
        String[][] mass = new String[0][]; //Сразу создаём не нужный объект, даже если ошибки не возникнет.
        try {
            BufferedReader reader = null; // Зачем-то инициализируем важную переменную важным значением null
            ArrayList<String> result = new ArrayList<String>(); //Почему-то нам важено чтобы это был ArrayList и чтобы код работ в Java 5
            Pattern pattern = Pattern.compile(patern);
            try {
                reader = new BufferedReader(new FileReader(filename));  //try with resource? Фигня бесолезная.
            } catch (FileNotFoundException e) {
                e.printStackTrace();  //Очень важно перехватить ошибку прямо здесь. Ведь даже, если мы не можем прочитать файл, важно чтобы дальше кот отработал.
            }
            String line;  
            while ((line = reader.readLine()) != null) { //Java 8 NIO2? Не. Мы же на Java 5 пишем.
                result.add(line);
            }
            mass = new String[result.toArray().length][7];
            for (int i = 0; i < result.toArray().length; i++) { //for each loop? Это тоже что-то слишком модное?
                Matcher matcher = pattern.matcher(result.get(i).toString()); //String.toString() очень важно всегда вызывать.
                if (matcher.find()) {
                    for (int j = 1; j <= matcher.groupCount(); ++j) {
                        mass[i][j - 1] = matcher.group(j); //Обожаю вот эти все минус единица, плюс единица. 
                    }
                }
            }
        } catch (IOException e2) {
            e2.printStackTrace();
        }
        return mass;
    }


BlackeAngelесли в функцию попадает большее кол-во matcher.group чем 7, то всё падает.
Как сделать динамически изменяемым? чтоб в зависимлсти от кол-ва matcher.group увеличивалось?
Можно просто создать массив когда группы известны.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628523
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Это всё здорово, но читать надо построчно, разбивать на столбцы регуляркой. Итоговый массив получается ёлочкой. И какие же инструменты использовать для себя задачи? Map сразу выкинем - он падает на некоторых файлах. А ридбуфер самое надёжное, что я знаю.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628529
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczМожно просто создать массив когда группы известны.
В разбеге от 3 до хрен его знает, как такое учесть?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628535
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelBlazkowicz,
Это всё здорово, но читать надо построчно, разбивать на столбцы регуляркой. Итоговый массив получается ёлочкой. И какие же инструменты использовать для себя задачи? Map сразу выкинем - он падает на некоторых файлах. А ридбуфер самое надёжное, что я знаю.
Извините, но не понимать массивы в Java, это, блин, за гранью.

Код: java
1.
2.
3.
4.
5.
6.
7.
mass = new String[result.size()][];
for (...) {
    Matcher matcher = ...
    if (matcher.find()) {
         mass[i] = new String[matcher.groupCount()];
    }
}



Вам по делу пишешь, а вы какую-то херню отвечаете.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628543
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
И что, так будет массив одномерный перемоздавпться каждый раз? Мне вообще надо на выходе получить двумерный.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628546
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelИ что, так будет массив одномерный перемоздавпться каждый раз? Мне вообще надо на выходе получить двумерный.
В Java нет двумерных массивов. Только массивы массивов. Двумерный массив это вырожденый случай массива массивов.
Вы же сами про ёлочку писали. Определитесь уже, если все элементы разной длины, то зачем под них выделять массивы максимальной длины?

И что значит это ваше "Мне вообще надо". Это какое-то техническое требование? Вооще просто перебрать потом массив в цикле не вариант? Обязательно весь квадрат обойти?
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628561
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczВы же сами про ёлочку писали. Определитесь уже, если все элементы разной длины, то зачем под них выделять массивы максимальной длины?

Затем что данные должны располагаться друг под другом в определенном максимальной длинной столбце. Пускай всё остальное будет null, но это проще обрабатывать, чем каждую строчку с переменной размерностью.

Да, массивы java знаю хреновенько, но классическое их поведение сносно.

Пример исходных данных(ёлочка)
1 2 3 4
1 2 3 4 5 6 7
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
Двумерный массив на выходе какой надо получить.
1 2 3 4 0 0 0
1 2 3 4 5 6 7
1 2 3 4 0 0 0
1 2 3 4 5 0 0
1 2 3 4 5 6 0
0 = null
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628581
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я шизею. Требования высасываются из пальца находу. Сначала и список списков подходит. Но потом массив массивов не подходит.
А вся проблема в том что в кучу намешано куча говна, которая должна быть разделена по полочкам.
- Работа с файловой системой отдельно
- Парсинг файлов отдельно (привет партизану)
- Формирование результата в формат требуемый для последующей обработки - отдельная задача.

Логично что нельзя сформировать матрицу, не зная её ширины. Соответсвтенно, нужно сначала узнать ширину, а затем формировать матрицу. И тут только два варианта.
Экономно по памяти, расход по CPU
- Перебрать вычислить ширину. Сформировать матрицу. Перебрать ещё раз.
Либо экономно по CPU, но перерасход по памяти
- Сохранить в промежуточный результат, хоть в один список с разделителями. Потом трансформировать его в матрицу.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628599
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczЯ шизею.
Не стоит, дорогой :-)

В общем магии никакой в java нет, как погляжу. Даже динамического двумерного массива с переформированием без потери данных... А на дворе 21 век...

Нет, из пальца ничего не высасывается, всё было изначально так. Просто часть озвучивалась, часть нет. Только поэтому использовались регулярки.

Ну что ж будем грузить проц, воспользовавшись первым советом, ибо циклы уже все построены, добавить пару условий и готово.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628604
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, в кучу у меня не намешано ничего. Всё по порядку работа с фс и парсинг идут друг за другом. Хотя вы говорите что java8 на дворе, а использую java5.
Да, парсю 2 раза, но такова ситуация.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628606
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelВ общем магии никакой в java нет, как погляжу. Даже динамического двумерного массива с переформированием без потери данных... А на дворе 21 век...
Магии в прикладном ПО вообще мало. Всё работает на технологиях разработанных в 80-х. Просто эти технологии стали использоваться повсеместно в связи с ростом вычислительных мощностей. Вся магия в железе.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628610
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, вот именно, человечество топчется на месте...
В общем, спасибо за ответы.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628611
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelКстати, в кучу у меня не намешано ничего. Всё по порядку работа с фс и парсинг идут друг за другом.
Метод один. Делает 3 задачи. А по порядку, так это, как бы так и должно быть. Все опеарции по порядку. И не важно что всё решение укладывается в один класс и один метод. Всё же по порядку.

BlackeAngelХотя вы говорите что java8 на дворе, а использую java5.
Экзотические требования есть смысл объявлять зарание. В любом случае это не повод не закрывать файловые хэндлы.
...
Рейтинг: 0 / 0
Чтение из текстового файла строковых данных в двумерный массив
    #39628624
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz В любом случае это не повод не закрывать файловые хэндлы.
А вот это косяк. Исправлю.
...
Рейтинг: 0 / 0
78 сообщений из 78, показаны все 4 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Чтение из текстового файла строковых данных в двумерный массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]