Чтение в массив java

Считывание строк из файла в массив

Есть файл в котором список фильмов (каждый фильм с новой строки). Как считать их в массив и по индексу выводить строку?
Писал такой вариант (см. ниже), но по индексу выводятся слова (Нулевое слово данной строки и т.д.)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import java.io.File; import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception{ File movietxt = new File("movies.txt"); int line = 0; Scanner movieScanner = new Scanner(movietxt); while(movieScanner.hasNextLine()){ String movieline = movieScanner.nextLine(); String movieArray[] = movieline.split(" "); line++; System.out.println(movieArray[0]); } } }

Считывание файла в массив строк
Добрый день, подскажите пожалуйста, где ошибка: есть файл в котором строки 123 флоалф 124.

Считывание из файла в массив строк
Например в файле: jfgjfjgfjkjdf32vsdf1 342rdfrg 3524t6yrfdh3 er2etg И тд Надо чтобы.

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

Считывание строк из файла и запись в массив
Добрый день. Вопрос такой, у меня в файле находится произвольное количество строк и столбцов чисел.

Эксперт PythonЭксперт Java

Dnepranin, пример файла и пример того, что ты хочешь получить

Добавлено через 13 минут

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public static void main(String[] args) { ArrayListString> list = new ArrayList<>(); try (Scanner scan = new Scanner(new File("films.txt"))) { while (scan.hasNextLine()) { list.add(scan.nextLine()); } } catch (FileNotFoundException e) { e.printStackTrace(); } String[] array = list.toArray(new String[0]); System.out.println(array[0]); System.out.println(array[3]); System.out.println(array[1]); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadFileToArray { public static void main(String[] args) { String path = "films.txt"; StringBuilder sb = new StringBuilder(); try (Scanner scan = new Scanner(new File(path))) { while (scan.hasNextLine()) { sb.append(scan.nextLine()).append("\n"); } } catch (FileNotFoundException e) { System.out.printf("File [%s] is not found.\n", path); } String[] array = sb.toString().split("\n"); for (String line : array) { System.out.println(line); } } }

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
import java.io.BufferedReader; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.io.IOException; public class Movies { public static final String FILE_NAME = "movies.txt"; public static void main(String[] args) { try { String[] movies = Files.newBufferedReader(Paths.get(FILE_NAME), StandardCharsets.UTF_8).lines().toArray(String[]::new); for ( int i = 0; i  movies.length; ++i ) System.out.println(movies[i]); } catch ( IOException e ) { e.printStackTrace(); } } }
[andrew@easybook files]$ javac Movies.java [andrew@easybook files]$ java Movies Reservoir Dogs Pulp Fiction Kill Bill From Dusk Till Dawn Jackie Brown [andrew@easybook files]$

Источник

Чтение в массив java

Для работы с массивами байтов — их чтения и записи используются классы ByteArrayInputStream и ByteArrayOutputStream.

Чтение массива байтов и класс ByteArrayInputStream

Класс ByteArrayInputStream представляет входной поток, использующий в качестве источника данных массив байтов. Он имеет следующие конструкторы:

ByteArrayInputStream(byte[] buf) ByteArrayInputStream(byte[] buf, int offset, int length)

В качестве параметров конструкторы используют массив байтов buf , из которого производится считывание, смещение относительно начала массива offset и количество считываемых символов length .

Считаем массив байтов и выведем его на экран:

import java.io.*; public class Program < public static void main(String[] args) < byte[] array1 = new byte[]; ByteArrayInputStream byteStream1 = new ByteArrayInputStream(array1); int b; while((b=byteStream1.read())!=-1) < System.out.println(b); >String text = "Hello world!"; byte[] array2 = text.getBytes(); // считываем 5 символов ByteArrayInputStream byteStream2 = new ByteArrayInputStream(array2, 0, 5); int c; while((c=byteStream2.read())!=-1) < System.out.println((char)c); >> >

В отличие от других классов потоков для закрытия объекта ByteArrayInputStream не требуется вызывать метод close .

Запись массива байт и класс ByteArrayOutputStream

Класс ByteArrayOutputStream представляет поток вывода, использующий массив байтов в качестве места вывода.

Чтобы создать объект данного класса, мы можем использовать один из его конструкторов:

ByteArrayOutputStream() ByteArrayOutputStream(int size)

Первая версия создает массив для хранения байтов длиной в 32 байта, а вторая версия создает массив длиной size .

Рассмотрим применение класса:

import java.io.*; public class Program < public static void main(String[] args) < ByteArrayOutputStream baos = new ByteArrayOutputStream(); String text = "Hello Wolrd!"; byte[] buffer = text.getBytes(); try< baos.write(buffer); >catch(Exception ex) < System.out.println(ex.getMessage()); >// превращаем массив байтов в строку System.out.println(baos.toString()); // получаем массив байтов и выводим по символьно byte[] array = baos.toByteArray(); for(byte b: array) < System.out.print((char)b); >System.out.println(); > >

Как и в других потоках вывода в классе ByteArrayOutputStream определен метод write , который записывает в поток некоторые данные. В данном случае мы записываем в поток массив байтов. Этот массив байтов записывается в объекте ByteArrayOutputStream в защищенное поле buf , которое представляет также массив байтов ( protected byte[] buf ).

Так как метод write может сгенерировать исключение, то вызов этого метода помещается в блок try..catch.

Используя методы toString() и toByteArray() , можно получить массив байтов buf в виде текста или непосредственно в виде массива байт.

С помощью метода writeTo мы можем вывести массив байт в другой поток. Данный метод в качестве параметра принимает объект OutputStream , в который производится запись массива байт:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); String text = «Hello Wolrd!»; byte[] buffer = text.getBytes(); try < baos.write(buffer); >catch(Exception ex) < System.out.println(ex.getMessage()); >try(FileOutputStream fos = new FileOutputStream(«hello.txt»)) < baos.writeTo(fos); >catch(IOException e)

После выполнения этой программы в папке с программой появится файл hello.txt, который будет содержать строку «Hello Wolrd!».

И в заключении также надо сказать, что как и для объектов ByteArrayInputStream, для ByteArrayOutputStream не надо явным образом закрывать поток с помощью метода close .

Источник

Читайте также:  From String To HTML
Оцените статью