Чтение отформатированного .text файла в переменные: Java

If you want to overwrite the existing class for different collection using typescript
then you have to inherit the existing class from different class.

export class User extends Typegoose{
  @prop
  username?:string
  password?:string
}


export class newUser extends User{
    constructor() {
        super();
    }
}

export const UserModel = new User ().getModelForClass(User , { schemaOptions: { collection: "collection1" } });

export const newUserModel = new newUser ().getModelForClass(newUser , { schemaOptions: { collection: "collection2" } });
3
задан Rando 30 March 2019 в 22:47
поделиться

3 ответа

Прежде всего, я рекомендую вам создать класс Entry, который представляет ваши данные.

private class Entry {
    private String name;
    private double length;
    private double width;

    // getters and setters omitted

    @Override
    public String toString() {
        // omitted
    }
}

Затем создайте метод, который принимает String в качестве аргументов и отвечает за разбор строки текста в экземпляре Entry. Регулярное выражение \\s+ сопоставляет любые пробельные символы и разделит вашу строку на отдельные столбцы. Помните, что в производстве Double.valueOf может выдать RuntimeException, если вы не передаете действительный String.

Наконец, вы можете прочитать файл, используя API потока Java 8. Пропустите первую строку, поскольку она содержит заголовок столбца, а не фактические данные.

private void readFile() throws Exception {
    Path path = Paths.get(/* path to your file */);

    Files.readAllLines(path).stream().skip(1).map(FileReadTest::toEntry)
            .forEach(this::action);
}

В моем примере я просто печатаю каждую запись на консоли:

private void action(Entry entry) {
    System.out.println(entry);
}

Результирующий вывод:

Entry[name='truck1', length=18.6, width=8.1]
Entry[name='suv1', length=17.4, width=7.4]
Entry[name='coupe1', length=14.8, width=5.4]
Entry[name='mini1', length=14.1, width=5.0]
Entry[name='sedan1', length=16.4, width=6.1]
Entry[name='suv2', length=17.5, width=7.3]
Entry[name='mini2', length=14.3, width=5.2]
Entry[name='sedan2', length=16.5, width=6.2]
0
ответ дан Glains 30 March 2019 в 22:47
поделиться

Вот пример того, как правильно читать текстовый файл - замените кодировку на тот, который вам нужен.

try (final BufferedReader br = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8)) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Когда у вас есть отдельные строки, вы можете разделить их на пробелы: str.split("\\s+");

Вы получите массив с тремя записями. Я думаю, вы можете выяснить, остальное.

0
ответ дан Dreamspace President 30 March 2019 в 22:47
поделиться

Сканер и Buffer Reader больше не используются, так как Java предоставляет лучший способ достичь того же результата с меньшим количеством кода. Я вижу по крайней мере три возможных подхода для решения вашей проблемы:

подход 1 : если вы можете использовать хотя бы Java 8, то я бы предложил использовать java.nio .file библиотеки в читают файл как поток строк :

Stream<String> linesStream=Files.lines("cars.txt");

Затем, в зависимости от того, что вам нужно сделать, вы можете использовать либо forEach [115 ], который будет зацикливаться на каждой строке потока:

linesStream.forEach(e -> e.myMethod());

или Java Collectors для выполнения необходимых вычислений. Хороший учебник о коллекционерах можно найти здесь здесь . Вы также можете использовать коллекторы для разделения вашей строки и т. Д ...

подход 2 : вы можете использовать библиотеки Apache Commons для достижения той же цели. В частности, вы можете использовать FileUtils и StringUtils . Например:

File carFile=new File("cars.txt");

LineIterator lineIterator=lineIterator(carFile);

for(String line : lineIterator) {

         String[] my values=StringUtils.split(line);

//do whatever you need

} 

подход 3 : используйте Джексона, чтобы преобразовать ваш файл в объект json или java, который вы затем сможете использовать для своих собственных преобразований. Здесь приведен пример, объясняющий, как преобразовать CSV в JSON. Немного покопавшись в документации Джексона, вы можете применить ее к своему делу.

0
ответ дан AR1 30 March 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: