Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从文本文件中的单词填充ArrayList?_Java_Arraylist_File Handling - Fatal编程技术网

Java 如何从文本文件中的单词填充ArrayList?

Java 如何从文本文件中的单词填充ArrayList?,java,arraylist,file-handling,Java,Arraylist,File Handling,我有一个文本文件,包含用换行符分隔的单词,格式如下: >hello >world >example 如何创建ArrayList并将每个单词存储为元素?最简单的方法是使用: File File=new文件(“foo.txt”); List words=Files.readLines(文件,Charsets.UTF_8); (不能保证它是一个ArrayList,但我希望这不重要。)最简单的方法是使用: File File=new文件(“foo.txt”); List

我有一个文本文件,包含用换行符分隔的单词,格式如下:

>hello  
>world  
>example 
如何创建ArrayList并将每个单词存储为元素?

最简单的方法是使用:

File File=new文件(“foo.txt”);
List words=Files.readLines(文件,Charsets.UTF_8);
(不能保证它是一个
ArrayList
,但我希望这不重要。)

最简单的方法是使用:

File File=new文件(“foo.txt”);
List words=Files.readLines(文件,Charsets.UTF_8);

(不能保证是
ArrayList,但我希望这没关系。)

您逐行读取文件,为字符串创建ArrayList,如果line.length>0,则向定义的ArrayList添加line.substring(1)。

您逐行读取文件,为字符串创建ArrayList,然后添加line.substring(1)如果line.length>0,则返回到定义的ArrayList。

您可以使用apache commons


我认为它返回的
列表已经是一个
ArrayList
,但是您可以使用构造函数来确保获得一个

我认为它返回的
列表已经是一个
ArrayList
,但是你可以使用构造函数来确保你得到一个;如果您运行以下命令,它将填充一个包含单词的ArrayList并打印它们

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;


public class Main {

    public static void main(String[] args) throws Exception {
        File file = new File("C:\\file.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));
        List<String> lines = new ArrayList<String>();
        String line = br.readLine();
        while(line != null) {
            lines.add(line.replace(">", ""));
            line = br.readLine();
        }
        for(String l : lines) {
            System.out.println(l);
        }
    }

}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.util.ArrayList;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args)引发异常{
File File=新文件(“C:\\File.txt”);
BufferedReader br=新的BufferedReader(新文件读取器(文件));
列表行=新的ArrayList();
String line=br.readLine();
while(行!=null){
行。添加(行。替换(“>”,“);
line=br.readLine();
}
用于(字符串l:行){
系统输出打印LN(l);
}
}
}
我把文件放在“C:\file.txt”;如果您运行以下命令,它将填充一个包含单词的ArrayList并打印它们

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;


public class Main {

    public static void main(String[] args) throws Exception {
        File file = new File("C:\\file.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));
        List<String> lines = new ArrayList<String>();
        String line = br.readLine();
        while(line != null) {
            lines.add(line.replace(">", ""));
            line = br.readLine();
        }
        for(String l : lines) {
            System.out.println(l);
        }
    }

}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.util.ArrayList;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args)引发异常{
File File=新文件(“C:\\File.txt”);
BufferedReader br=新的BufferedReader(新文件读取器(文件));
列表行=新的ArrayList();
String line=br.readLine();
while(行!=null){
行。添加(行。替换(“>”,“);
line=br.readLine();
}
用于(字符串l:行){
系统输出打印LN(l);
}
}
}

我确信有很多库都是用一行代码实现的,但这里有一个“纯”Java实现:

请注意,我们已经“包装”/“装饰”了一个标准的文件读取器(一次只读取一个字节)和一个BufferedReader,这为我们提供了一个更好的readLine()方法

BufferedReader读取器=null;
试一试{
reader=新的BufferedReader(新的InputStreamReader(
新文件输入流(“test.txt”),
字符集forName(“ISO-8859-1”);
列表行=新的ArrayList();
弦线;
而((line=reader.readLine())!=null){
行。添加(行);
}
系统输出打印项次(行);
}捕获(IOE异常){
e、 printStackTrace();
}最后{
if(读卡器!=null){
reader.close();
}
}

我确信有很多库都是用一行代码实现的,但这里有一个“纯”Java实现:

请注意,我们已经“包装”/“装饰”了一个标准的文件读取器(一次只读取一个字节)和一个BufferedReader,这为我们提供了一个更好的readLine()方法

BufferedReader读取器=null;
试一试{
reader=新的BufferedReader(新的InputStreamReader(
新文件输入流(“test.txt”),
字符集forName(“ISO-8859-1”);
列表行=新的ArrayList();
弦线;
而((line=reader.readLine())!=null){
行。添加(行);
}
系统输出打印项次(行);
}捕获(IOE异常){
e、 printStackTrace();
}最后{
if(读卡器!=null){
reader.close();
}
}
公共静态void main(字符串[]args)引发IOException{ //TODO自动生成的方法存根

    File file = new File("names.txt");
    ArrayList<String> names = new ArrayList<String>();
    Scanner in = new Scanner(file);
    while (in.hasNextLine()){
        names.add(in.nextLine());
    }
    Collections.sort(names);
    for(int i=0; i<names.size(); ++i){
        System.out.println(names.get(i));
    }
File File=new文件(“names.txt”);
ArrayList name=新的ArrayList();
扫描仪输入=新扫描仪(文件);
while(在.hasNextLine()中){
name.add(in.nextLine());
}
集合。排序(名称);
for(inti=0;ipublicstaticvoidmain(String[]args)抛出IOException{
//TODO自动生成的方法存根

    File file = new File("names.txt");
    ArrayList<String> names = new ArrayList<String>();
    Scanner in = new Scanner(file);
    while (in.hasNextLine()){
        names.add(in.nextLine());
    }
    Collections.sort(names);
    for(int i=0; i<names.size(); ++i){
        System.out.println(names.get(i));
    }
File File=new文件(“names.txt”);
ArrayList name=新的ArrayList();
扫描仪输入=新扫描仪(文件);
while(在.hasNextLine()中){
name.add(in.nextLine());
}
集合。排序(名称);

对于(int i=0;iIt看起来像一个普通的家庭作业-请添加标记,如果是这样的话。它看起来像一个普通的家庭作业-请添加标记,如果是这样的话。我使用了line.substring(1),因为他的示例在每行的开头都有一个“>”。我使用了line.substring(1)因为他的示例包含在每行的开头都有一个“>”。请注意,这将使用默认字符编码,这通常不是一个好主意。我建议使用围绕FileInputStream的InputStreamReader。此外,
close
调用应该在
finally
块中。我建议让
IOExceptionn
也向调用方发出气泡。请注意,这将使用默认字符编码,这通常不是一个好主意。我建议使用围绕文件InputStream的InputStreamReader。此外,
关闭
调用应该在
最后
块中。我建议让
IOException
气泡向上到达ca