现在要从控制台输入用户名以及用户密码,判断是否登录成功!要求准确的用户名和密码存在配置文件中!我现在把配置文件(login.dat)的内容设为:username="jiang"  password="123",请问怎样才能从login.dat文件中获取到用户名和密码?或者login.dat的内容有误?下面是我写的部分代码,暂时是把用户名和密码写死的。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;public class LoginTest {

public static void main(String[] args) throws IOException {
Date date = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
File file = new File("log.txt");

System.out.println();
if(!file.exists()){
System.out.println("文件不存在,创建该文件!");
file.createNewFile();
}

FileWriter fw= new FileWriter(file);
BufferedWriter bw=new BufferedWriter(fw);
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
System.out.println("请登录!");
System.out.print("请输入用户名:");
String username= br.readLine();
System.out.print("请输入密码:");
String password= br.readLine();
if(username.equalsIgnoreCase("jiang")&&password.equalsIgnoreCase("123")){
System.out.println("登录成功!");
System.out.println("您可以操作了...");
}else{
System.out.println("用户名或密码错误,请重新输入!");
}

System.out.println("请输入字符串:");
String str= br.readLine();
bw.write(str);
bw.newLine();
String s=sdf.format(date);
String st= "用户:"+username;
bw.write(st);
bw.newLine();
String time= "登录时间:"+s;
bw.write(time);

System.out.println("您已完成操作,请退出!");
bw.flush();
fw.flush();
br.close();
bw.close();
fw.close();

}}

解决方案 »

  1.   

    这种一般封装好的方式就是value = fileObject.getValue(key)有一些现成的类库,搜一下,类似操作properties文件:
    http://www.blogjava.net/action/archive/2006/08/21/64804.html具体实现,io流通过例如readLine之后按某些分割标准空格、逗号、等号之类的逐步
    分割出各信息字段
      

  2.   

    可以把用户名密码什么的存在XML中,内容有误就会抛异常。读取也方便。
      

  3.   

    在命令行输入用户名/密码使用 java.io.Console 类。Console console = System.console();
    String username = console.readLine("请输入用户名: ");
    char[] password = console.readPassword("请输入密码: ");不要保存密码明文
      

  4.   


    保存明文不安全。想想问啥你银行卡密码忘记了,银行的人是让你重置密码,而不是告诉你原始密码。原始密码理论上是不应该有人知道的。
    通常都是保存密码的md5值。用户输入密码,将输入密码的md5值跟存储的md5值进行对比,相等就OK。
    当然,普通场景这么搞没关系,重要场合还是要进行多次加密的。
      

  5.   

    上面的 password 使用完,立即调用 Arrays.fill(password,'0');