读取文件并将其转换为数组(Java)

读取文件并将其转换为数组(Java),java,Java,因此,我有一个由新行分隔的短语集合,我想用这些短语填充一个数组。这就是我到目前为止所做的: Scanner s; s = new Scanner(new BufferedReader(new FileReader("Phrases.txt"))); for(i = 0; i < array.length;i++) { s.nextLine() = array[i]; } s; s=新的扫描仪(新的BufferedReader(新的文件阅读器(“Phra

因此,我有一个由新行分隔的短语集合,我想用这些短语填充一个数组。这就是我到目前为止所做的:

   Scanner s;
   s = new Scanner(new BufferedReader(new FileReader("Phrases.txt")));
   for(i = 0; i < array.length;i++)
   {
   s.nextLine() = array[i];
   }
s;
s=新的扫描仪(新的BufferedReader(新的文件阅读器(“Phrases.txt”));
对于(i=0;i

有没有一种简单快捷的方法可以用新行分隔的短语填充数组?

你做错了。一定是这样

for(i = 0; i < array.length;i++)
   {
   array[i]=s.nextLine();
   }

array[i] = value; // the value would be assigned into the array at index i.
for(i=0;i
然而,更好的选择是使用一个实现类的列表,比如ArrayList,它提供了动态大小的优势

 List<String> list = new ArrayList<>();
 list.add(s.nextLine(());
List List=new ArrayList();
添加(s.nextLine(());

分配应该是反向的:-

array[i] = s.nextLine();
而且,我认为您应该根据从文件接收到的输入来填充数组。这里,您是根据预先声明的数组的长度来接收输入。我的意思是,由于您使用的是
数组
,因此您的大小是固定的。因此,您只能使用固定数量的短语填充它


更好的方法是使用
ArrayList

List<String> phrases = new ArrayList<String>();
使用
while
循环读取,直到
EOF

while (s.hasNextLine()) {
    phrases.add(s.nextLine());
}

由于您不知道可能会有多少短语(我怀疑),我会填充
ArrayList
,并在完成后使用将其转换为数组。不过,为了更大的灵活性,我可能会将其作为Java集合保留。

您将赋值操作倒置(
array[I]
应设置为
s.nextLine()
,而不是相反。此外,最好将for循环修改为在不再存在行时终止:

for(i = 0; i < array.length && s.hasNextLine() ;i++) {
     array[i] = s.nextLine()
}
for(i=0;i
不要浪费时间在
扫描仪上
BufferedReader
很好。试试这个:

BufferedReader br = new BufferedReader(new FileReader("Phrases.txt")));
LinkedList<String> phrases = new LinkedList<String>();
while(br.ready()) {
    phrases.add(br.readLine());
}
String[] phraseArray = phrases.toArray(new String[0]);
BufferedReader br=newbufferedreader(newfilereader(“Phrases.txt”));
LinkedList短语=新建LinkedList();
while(br.ready()){
短语。添加(br.readLine());
}
String[]phraseArray=phrases.toArray(新字符串[0]);

顺便说一句,如果文件很大,使用
LinkedList
而不是
ArrayList
是非常重要的。那样的话,你只能在最后创建一个数组。否则,你将有大量的大数组创建和内存浪费。

可以使用带有


你知道你的这段代码没有填充任何数组吗?从未使用过
BufferedReader.ready
。真的有这样一个名称的方法吗?我错过了吗?它确实存在!@durron597..Man..谢谢。我从来都不知道。实际上我主要使用
扫描仪
。对于BufferedReader,我使用了
null
检查
readLine()
(这是被接受的答案?它不起作用,因为你不知道数组将有多大!而且它没有正确地参数化
ArrayList
@durron597..实际上
ArrayList
被正确地参数化了。只是它只在
Java7
-(菱形操作符)中起作用它被称为。@durron597我很困惑。
它不起作用,因为你不知道数组会有多大!
?这个答案中唯一错误的是dimond问题,它在java 7中会很好地工作。@durron597在这里更新你自己关于
java 7中的钻石
,我不认为每个人都在java 7上。还有您的代码没有为
array
的值声明大小,因此如果文件太大,它将
ArrayIndexOutOfBounds
BufferedReader br = new BufferedReader(new FileReader("Phrases.txt")));
LinkedList<String> phrases = new LinkedList<String>();
while(br.ready()) {
    phrases.add(br.readLine());
}
String[] phraseArray = phrases.toArray(new String[0]);
FileUtils.readLines(myFile).toArray(new String[0]);