Java 如何在二进制文件中序列化由2个列表组成的数组?
我正在创建一个Java程序,它读取两个文本文件,从每个文件中随机选择10个单词,并将它们存储在两个字符串列表的数组中。我已经创建了以下代码,但是这只读取了单词,它不会存储它们。我还需要在一个二进制文件中序列化2个列表的数组。如何做到这一点?在此方面的一些帮助将不胜感激Java 如何在二进制文件中序列化由2个列表组成的数组?,java,arraylist,random,fileoutputstream,Java,Arraylist,Random,Fileoutputstream,我正在创建一个Java程序,它读取两个文本文件,从每个文件中随机选择10个单词,并将它们存储在两个字符串列表的数组中。我已经创建了以下代码,但是这只读取了单词,它不会存储它们。我还需要在一个二进制文件中序列化2个列表的数组。如何做到这一点?在此方面的一些帮助将不胜感激 import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.ut
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;
}
}
import java.io.*;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.util.ArrayList;
导入java.util.Random;
导入java.util.Scanner;
导入静态java.nio.file.StandardOpenOption.CREATE;
公共类随机字生成器{
公共静态void main(字符串[]args)引发IOException{
Path outputFile=Path.get(“output.txt”);
ArrayList randomWords1=randomWordsFromFile(“input1.txt”,10);
ArrayList randomWords2=randomWordsFromFile(“input2.txt”,10);
OutputStream OutputStream=new BufferedOutputStream(Files.newOutputStream(outputFile,CREATE));
系统输出打印LN(随机字1);
System.out.println(randomWords2);
outputStream.flush();
对于(int i=0;i
您的代码应该读取两个文件,从每个文件中随机选择十个单词,并将每个文件中的十个单词存储到两个列表中。这样做正确吗?如果没有,则在继续之前修复所有错误。您可以在此处询问无法修复的特定错误。一定要解释你的代码要做什么,以及它为阻止它这样做而产生的错误
一切正常后,进入下一阶段。二进制序列化是您需求的一部分吗?如果不是,那么我将使用UTF-8中的一个简单CSV文件,它也是一个二进制文件(所有文件都是这样)。如果需要实际的序列化,请阅读上的Javadocs和教程。编写一些代码,如果无法使用,请返回此处。什么是非二进制文件?我想我已经做了必要的更改?