从txt文件

时间:2015-11-05 22:46:15

标签: java file inputstream fileinputstream

我正在处理类项目的密码登录部分。没有什么花哨。用户或角色将是int,密码是String。我现在只是使用简单加密。我遇到的问题是在读取文件时输入输入不匹配。我过去做过类似的事情,要求我阅读整数和字符串并且没有任何问题。但我无法弄清楚在这种情况下出了什么问题。任何有关我为什么会收到此错误的帮助将不胜感激。我正在使用while(inputStream.hasNextLine())然后阅读int,然后阅读String我尝试hasNextInthasNext并继续收到同样的错误。

public void readFile(){
    Scanner inputStream = null;
    try {
        inputStream = new Scanner (new FileInputStream("login.txt"));
    }catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    if(inputStream != null){
    while (inputStream.hasNextLine()){
        int luser = inputStream.nextInt();
        String lpass = inputStream.nextLine();
        newFile[count] = new accessNode(luser, lpass);
        count ++;
    }
    inputStream.close();
    }    
}

2 个答案:

答案 0 :(得分:1)

尝试将其作为String读取并将字符串转换为int

while (inputStream.hasNextLine()) {

    Integer luser = Integer.parseInt(inputStream.nextLine());
    String lpass = inputStream.nextLine();
    newFile[count] = new accessNode(luser, lpass);
    count++;
}

但您需要确保您的文件的数据格式如下所示

12342
password

答案 1 :(得分:1)

如果不知道你得到的是什么错误,很难说,但我的猜测是因为你没有读完整个文件。

您的文件可能如下所示:

1\r\n
password\r\n

当你调用nextInt()时,它会读取int,但是没有超过第一个\ r \ n,所以当你调用nextLine()时它会读到行尾,所以你得到的只是\ r \ n \ n。您需要阅读第一个\ r \ n,然后阅读密码。

尝试

int luser = inputStream.nextInt();
inputStream.nextLine();
String lpass = inputStream.nextLine();
newFile[count] = new accessNode(luser, lpass);