Java从控制台读入数据的几种方法
2011-12-24 13:50
253 查看
这里记录Java中从控制台读入信息的几种方式,已备后查!(1)JDK1.4(JDK1.5和JDK1.6也都兼容这种方法)publicclassTestConsole1{
publicstaticvoidmain(String[]args){
Stringstr=readDataFromConsole("Pleaseinputstring:);
System.out.println("Theinformationfromconsole:+str);
}
/**
*UseInputStreamReaderandSystem.intoreaddatafromconsole
*
*@paramprompt
*
*@returninputstring
*/
privatestaticStringreadDataFromConsole(Stringprompt){
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
Stringstr=null;
try{
System.out.print(prompt);
str=br.readLine();
}catch(IOExceptione){
e.printStackTrace();
}
returnstr;
}
}[/code](2)JDK1.5(利用Scanner进行读取)publicclassTestConsole2{publicstaticvoidmain(String[]args){Stringstr=readDataFromConsole("Pleaseinputstring:");System.out.println("Theinformationfromconsole:"+str);}/***Usejava.util.Scannertoreaddatafromconsole**@paramprompt**@returninputstring*/privatestaticStringreadDataFromConsole(Stringprompt){Scannerscanner=newScanner(System.in);System.out.print(prompt);returnscanner.nextLine();}}[/code]publicclassTestConsole3{publicstaticvoidmain(String[]args){Stringstr=readDataFromConsole("Pleaseinputstring:");System.out.println("Theinformationfromconsole:"+str);}/***Usejava.io.consoletoreaddatafromconsole**@paramprompt**@returninputstring*/privatestaticStringreadDataFromConsole(Stringprompt){Consoleconsole=System.console();if(console==null){thrownewIllegalStateException("Consoleisnotavailable!");}returnconsole.readLine(prompt);}}[/code]publicclassTestConsole5{publicstaticvoidmain(String[]args){Consoleconsole=System.console();if(console==null){thrownewIllegalStateException("Consoleisnotavailable!");}while(true){Stringusername=console.readLine("Username:");char[]password=console.readPassword("Password:");if(username.equals("Chris")&&String.valueOf(password).equals("GoHead")){console.printf("WelcometoJavaApplication%1$s.\n",username);//使用后应立即将数组清空,以减少其在内存中占用的时间,增强安全性password=null;System.exit(-1);}else{console.printf("Invalidusernameorpassword.\n");}}}}[/code]
Scanner还可以很方便的扫描文件,读取里面的信息并转换成你要的类型,比如对“22.23.33.334.5done”这样的数据求和,见如下代码:
(3)JDK1.6(利用java.io.Console进行读取)JDK6中提供了java.io.Console类专用来访问基于字符的控制台设备.你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳.(类似System.in和System.out)但我们不总是能得到可用的Console,一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用.如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例。在使用IDE的情况下,是无法获取到Console实例的,原因在于在IDE的环境下,重新定向了标准输入和输出流,也是就是将系统控制台上的输入输出重定向到了IDE的控制台中publicclassTestConsole4{publicstaticvoidmain(String[]args)throwsIOException{FileWriterfw=newFileWriter("num.txt");fw.write("22.23.33.334.5done");fw.close();System.out.println("Sumis"+scanFileForSum("num.txt"));}publicstaticdoublescanFileForSum(StringfileName)throwsIOException{doublesum=0.0;FileReaderfr=null;try{fr=newFileReader(fileName);Scannerscanner=newScanner(fr);while(scanner.hasNext()){if(scanner.hasNextDouble()){sum=sum+scanner.nextDouble();}else{Stringstr=scanner.next();if(str.equals("done")){break;}else{thrownewRuntimeException("FileFormatiswrong!");}}}}catch(FileNotFoundExceptione){thrownewRuntimeException("File"+fileName+"notfound!");}finally{if(fr!=null)fr.close();}returnsum;}}
Console类还有个特色就是,专门对密码(输入无回显)等安全字符,进行了处理。专门提供readPassword()方法,具体应用见如下代码:
相关文章推荐
- 【引用】Java从控制台读入数据的几种方法
- Java从控制台读入数据的几种方法
- Java从控制台读入数据的几种方法
- Java从控制台读入数据的几种方法总结
- 详细整理Java 从命令控制台输入数据读取输入流System.in的几种常用方法
- 云端飘 Java中从控制台输入数据的几种常用方法
- JAVA从控制台读数据的几种方法
- Java从控制台输入获取数据的几种常用方法
- Java从控制台输入获取数据的几种常用方法
- Java从控制台读取数据,输入流System.in的几种方法效率比较
- Java中从控制台输入数据的几种常用方法
- 10007---Java中从控制台输入数据的几种常用方法
- Java中从控制台输入数据的几种常用方法(转)
- Java中从命令控制台输入数据的几种常用方法
- java从控制台读入数据的方法
- Java中从控制台输入数据的几种常用方法
- Java中从命令控制台输入数据的几种常用方法
- Java中从控制台输入数据的几种常用方法
- Java中从控制台输入数据的几种常用方法
- Java中从控制台输入数据的几种常用方法