2016-12-19 19 views
-1

Я создаю программу Java, которая читает два текстовых файла, выбирает 10 слов в случайном порядке из каждого файла и сохраняет их в массиве из двух строковых списков. Пока что я создал следующий код, однако это только читает слова, они не хранят их. Мне также необходимо сериализовать массив из 2 списков в двоичном файле. Как это может быть сделано? Некоторая помощь с этим будет очень признательна!Как сериализовать массив из 2 списков в двоичном файле?

import java.io.*; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.util.ArrayList; 
import java.util.Random; 
import java.util.Scanner; 

import static java.nio.file.StandardOpenOption.CREATE; 

public class RandomWordGenerator { 
    public static void main(String[] args) throws IOException { 
     Path outputFile = Paths.get("output.txt"); 
     ArrayList<String> randomWords1 = randomWordsFromFile("input1.txt", 10); 
     ArrayList<String> randomWords2 = randomWordsFromFile("input2.txt", 10); 
     OutputStream outputStream = new BufferedOutputStream(Files.newOutputStream(outputFile, CREATE)); 
     System.out.println(randomWords1); 
     System.out.println(randomWords2); 
     outputStream.flush(); 
     for (int i = 0; i < randomWords1.size(); i++) { 
      outputStream.write(randomWords1.get(i).getBytes()); 
     } 
     for (int i = 0; i < randomWords2.size(); i++) { 
      outputStream.write(randomWords2.get(i).getBytes()); 
     } 
     outputStream.close(); 
    } 

    private static ArrayList<String> randomWordsFromFile(String fileName, int count) throws FileNotFoundException { 
     Scanner scanner = new Scanner(new File(fileName)); 
     ArrayList<String> words = new ArrayList<>(); 
     while (scanner.hasNext()) { 
      words.add(scanner.next()); 
     } 
     return randomFromWords(words, count); 
    } 

    static private ArrayList<String> randomFromWords(ArrayList<String> words, int count) { 
     ArrayList<String> randomWords = new ArrayList<>(); 
     for (int i = 0; i < count;) { 
      int random = new Random().nextInt(words.size()); 
      if (randomWords.add(words.get(random))) { 
       i++; 
      } 
     } 
     return randomWords; 
    } 
} 
+1

Что такое не двоичный файл? – xenteros

+0

[Почему кто-нибудь может мне помочь? », А не вопрос?] (Http://meta.stackoverflow.com/q/284236/18157) –

ответ

0

Ваш код должен прочитать два файла, выбрать десять случайных слов из каждого файла и сохранить десять слов из каждого файла в два списка. Это делает это правильно? Если он не исправляет все ошибки, прежде чем продолжить. Вы можете задать здесь конкретные ошибки, которые вы не можете исправить. Обязательно объясните, что должен делать ваш код, и ошибка, которую он делает, чтобы предотвратить это.

Как только все работает правильно, переходите к следующему этапу. Является ли бинарная сериализация частью вашего требования? Если нет, то я бы использовал простой CSV-файл в UTF-8, который также является двоичным файлом (как и все файлы в глубине души). Если требуется фактическая сериализация, прочитайте Javadocs и учебники по адресу Serialization. Напишите код и вернитесь сюда, если вы не можете заставить его работать.

+0

Я думаю, что внес необходимые изменения? – NoahSM1993