2014-10-06 77 views
-1

因此,我正在尝试编写一个Java应用程序,其中包含一些包含如下数据的文本文件:id,username,password,并且每条记录都在一个新行中。我想要实现的是说,例如,如果用户输入“vick”,我希望能够在文本文件中搜索具有“vick”的用户名并返回id,用户名,密码。如何从文本文件中使用Java返回完整的字符串行

这是我到目前为止有:

import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.nio.charset.Charset; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.util.Scanner; 


public class tests { 

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


     File file = new File("C:\\Users\\Vick\\PT\\Tests\\src\\users.txt"); 
     String[] UserToken = null; 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     int lineCount = 0; 
     while(br.readLine() != null) 
     { 
      lineCount++; 
     } 
     br.close(); 
     Scanner inputeFile = new Scanner(file); 

     int uid = 0; 
     String username = null; 
     String password = null; 

     while(inputeFile.hasNext()) 
     { 
      String str = inputeFile.nextLine(); 
      UserToken = str.split(","); 

      uid = Integer.parseInt(UserToken[0]); 
      username = UserToken[1]; 
      password = UserToken[2]; 

      //Users u1 = new Users(uid, username, password); 
      //System.out.println(UserToken[0] + " - " + UserToken[1] + " - " + UserToken[2]); 
     } 
     Users u1 = new Users(uid, username, password); 
     Scanner search = new Scanner(System.in); 
     System.out.println("Search for user: "); 
     String searchterm = search.next(); 

     while(inputeFile.hasNext()) 
     { 
      if(u1.getUsername().contains(searchterm)) 
      { 
       System.out.println("HE!"); 
      } 
     } 
    } 

} 

,这是用户级的,我想用它

public class Users { 
    public int userid; 
    public static String username; 
    public String password; 

    public Users(int userid, String username, String password) 
    { 
     userid = userid; 
     username = username; 
     password = password; 
    } 

    public int getUID() 
    { 
     return userid; 
    } 

    public static String getUsername() 
    { 
     return username; 
    } 

    public String getPassword() 
    { 
     return password; 
    } 
} 

回答

0

使用 - 已经说过在这个线程作为一个人,使用hasNextLine() - 您的代码效率不高。 (首先你循环所有行来获取计数,然后再次循环它们以读取)。我的代码也可以改进,但我会把它作为一个练习。 - 一个我测试

1,test,lol 
2,robot,small 

示例文件 -

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Scanner; 


public class Tests { 

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

     Scanner search = new Scanner(System.in); 
     System.out.println("Search for user: "); 
     String searchterm = search.next(); 


     File file = new File("/tmp/users.txt"); 
     String[] UserToken = null; 
     BufferedReader br = new BufferedReader(new FileReader(file)); 

     Scanner inputeFile = new Scanner(file); 

     int uid = 0; 
     String username = null; 
     String password = null; 

     while(inputeFile.hasNext()) 
     { 
      String str = inputeFile.nextLine(); 
      UserToken = str.split(","); 

      uid = Integer.parseInt(UserToken[0]); 
      username = UserToken[1]; 
      password = UserToken[2]; 

      // make user object here if you want to 
      if (username.contains(searchterm)) 
      { 
       System.out.println(str); 
      } 
     } 

    } 
} 
+0

所以我不是远从得到这个权利?谢谢帮助很多 – 2014-10-06 13:05:55

+0

没问题。你看起来像Java的初学者。挂在那里。你离得很近。 – Anon 2014-10-06 13:07:24

相关问题