Чтение из файла BufferedReader

168
06 июля 2019, 00:30

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

www mail login password
www1 mail1 login1 password1

но я хочу понимать, какие слова на новой строке, а какие нет, подскажите как это сделать, сейчас мой код выглядит так.

BufferedReader fileReader;
        String buf[] = new String[0];
        {
            try {
                String str = null;
                fileReader = new BufferedReader(new FileReader("C:\\...\\src\\model\\file.txt"));
                while ((str = fileReader.readLine()) != null) {
                    //получаем новые слова
                    String[] newWords = str.split(" ");
                    //создаем расширенный массив
                    String[] result = new String[buf.length + newWords.length];
                    //копируем элементы в массив
                    System.arraycopy(buf, 0, result, 0, buf.length);
                    System.arraycopy(newWords, 0, result, buf.length, newWords.length);
                    //присваиваем результирующий массив текущему
                    buf = result;
                }
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
Answer 1

Я бы использовал обычный file и Scanner, если вам нужно просто считать строки из текстового файла и вывести их в консоль. Примерно так:

  package com.company;
  import java.util.Scanner;
  import java.io.*;
  public class Main {

public static void main(String[] args) throws FileNotFoundException {
    // Ниже путь к файлу
    File myFile = new File("C:\\Users\\User\\Projects\\Schitka\\src\\com\\company\\Test.txt");
    // Связываем объект Scanner с нашим файлом
    Scanner scanf = new Scanner(myFile);
    String temp ="";
    // Пока в файле есть строки
    while (scanf.hasNextLine()){
        System.out.println(scanf.nextLine()); // или temp=scanf.nextLine();
        // temp можно разбить по разделителям и заполнить словами массив или сразу использовать temp для чего-либо.
    }
    scanf.close();
   }
  }

Если нужно считать русские слова из файла, откройте файл в бинарном режиме, а после того, как поработайте с ним — закройте с помощью метода

  .close();

Если нужно считать каждый символ в строке

      FileReader fileOut = null;
      try {
        fileIn = new FileReader("Test.txt");
        int a;
        while((a = fileIn.read()) != -1) {
            fileOut.write(a);
        }
    } finally {
        if (fileIn != null) {
            fileIn.close();
        }
READ ALSO
Как правильно начать цепочку промисов?

Как правильно начать цепочку промисов?

Имеется 2 обычных функции , f1() и f2()Вторая должна выполнится после окончания выполнения первой

142
как указать PHPStorm свою JS библиотеку, для того чтобы он видел ее методы?

как указать PHPStorm свою JS библиотеку, для того чтобы он видел ее методы?

Шторм не видит мою библиотеку, как я не пытался ее подключить глобальноТе библиотека по факту доступна на данной странице в глобальной области...

127
Яндекс поделиться изменить title кнопки

Яндекс поделиться изменить title кнопки

Проблема с яндекс share, добавляю vkontakte, facebook, twitter, при hover у кнопки vkontakte атрибут "vkontakte" клиент хочет при hover title 'VK'

142
Разбить строку в массив по первому пробелу

Разбить строку в массив по первому пробелу

Есть строка, допустим 'Вот такая вот строка', как её разбить по первому пробелу, чтобы получить вот такой массив ['Вот','такая вот строка']?

146