日期:2014-05-20  浏览次数:20855 次

有关I/O流问题
现在要从控制台输入用户名以及用户密码,判断是否登录成功!要求准确的用户名和密码存在配置文件中!我现在把配置文件(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();

}

}

------解决方案--------------------
这种一般封装好的方式就是

value = fileObject.getValue(key)

有一些现成的类库,搜一下,类似操作properties文件:
http://www.blogjava.net/action/archive/2006/08/21/64804.html

具体实现,io流通过例如readLine之后按某些分割标准空格、逗号、等号之类的逐步
分割出各信息字段
------解决方案--------------------
可以把用户名密码什么的存在XML中,内容有误就会抛异常。读取也方便。
------解决方案--------------------
从文件,数据库取数,很简单的,拿到数据你想怎么处理都行。
------解决方案--------------------
在命令行输入用户名/密码使用 java.io.Console 类。
Java code

Console console = System.console();
String username = console.readLine("请输入用户名: ");
char[] password = console.readPassword("请输入密码: ");

------解决方案--------------------
探讨
在命令行输入用户名/密码使用 java.io.Console 类。

Java code

Console console = System.console();
String username = console.readLine("请输入用户名: ");
char[] password = console.readPassword("请输入密码: ");


不要保存密码明文……

------解决方案--------------------
探讨

引用:
在命令行输入用户名/密码使用 java.io.Console 类。

Java code

Console console = System.console();
String username = console.readLine("请输入用户名: ");
char[] password = console.readPassword("请输入……

------解决方案--------------------
上面的 password 使用完,立即调用
Java code
Arrays.fill(password,'0');