繁体   English   中英

在ArrayList对象中存储文件中的字符串?

[英]Storing String from file in an ArrayList object?

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;


public class Cities {

    public static void main(String[] args) throws IOException {

        String filename;
        System.out.println("Enter the file name : ");
        Scanner kb = new Scanner(System.in);
        filename = kb.next();

        //Check if file exists 
          File f = new File(filename);

          if(f.exists()){

            //Read file
            File myFile = new File(filename);
            Scanner inputFile = new Scanner(myFile);

            //Create arraylist object
            ArrayList<String> list = new ArrayList<String>();

            String cit;

            while(inputFile.hasNext()){
                cit = inputFile.toString();
                list.add(inputFile.toString());
            }
            System.out.println(list);  

          }else{
              System.out.println("File not found!");
          }   
    }   
}

我正在尝试读取文件并将内容添加到arraylist对象( .txt文件包含字符串),但我完全迷失了。 有什么建议?

您应该逐行读取文件并将其存储到列表中。

这是你应该替换你的代码while (inputFile.hasNext())

Scanner input = null;
try
{
    ArrayList<String> list = new ArrayList<String>();
    input = new Scanner( new File("") );
    while ( input.hasNext() )
        list.add( input.nextLine() );
}
finally
{
    if ( input != null )
        input.close();
}

您应该在阅读文件后关闭Scanner

如果您使用的是Java 7+,则可以使用Files#readAllLines()为您执行此任务,而不是自己编写forwhile循环来逐行读取文件。

File f = new File(filename); // The file from which input is to be read.
ArrayList<String> list = null; // the list into which the lines are to be read
try {
    list = Files.readAllLines(f.toPath(), Charset.defaultCharset());
} catch (IOException e) {
    // Error, do something
}

你可以用Guava一行完成。

final List<String> lines = Files.readLines(new File("path"), Charsets.UTF8);

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/Files.html#readLines(java.io.File,java.nio.charset.Charset)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM