如何存储arraylist中某个列的文本?

时间:2015-03-15 17:43:23

标签: java file bufferedreader

我只想存储.txt文件中包含的第一列。

hello28  23232
hello27  23232
hello25  12321

这是我到目前为止的代码,但目前它存储文件中的每一行;如何才能使它只存储第一列(包含用户用户名的那一列)?

public static boolean checkUserExists(String userName){
    String line = "";
    ArrayList <String> userNames = new ArrayList <String>();

    try{
       FileReader fr = new FileReader("investments.txt");
       BufferedReader br = new BufferedReader(fr);

        while((line = br.readLine()) != null) {
            userNames.add(line);
        }
        }

    catch(IOException e){
            System.out.println("File not found!");
    }

    if (userNames.contains(userName)){
        return false;
    }
    else{
        return true;
    }        
}   

2 个答案:

答案 0 :(得分:1)

您需要做的就是 只是使用空格作为分隔符来分割每一行并保留第一个标记,并为每一行重复该行:

这可以使用以下使用split函数的代码行来实现(请参阅此处http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)更多信息)

line.split("\\s+");

然后,第零个(0)元素包含第一列,如您所愿

你去了一个完全工作的班级:

import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
class white {
public static void main(String[] args) {

    String line = "";
    String username = "";
    ArrayList <String> userNames = new ArrayList <String>();

    try{
       FileReader fr = new FileReader("investments.txt");
       BufferedReader br = new BufferedReader(fr);

        while((line = br.readLine()) != null) {
            line.split("\\s+");
            userNames.add(line.split("\\s+")[0]);
            System.out.println(line.split("\\s+")[0]);
        }
        }

    catch(IOException e){
            System.out.println("File not found!");
    }       
}   
}

<强>输出:

hello28
hello27
hello25

答案 1 :(得分:1)

您可以提取第一个空格之前的部分行:

userNames.add(line.substring(0, line.indexOf(' ') ));