输入输出
读取输入
- Scanner类
- Scanner对象可以接受各种输入。比如说控制台的输入、文本流、二进制流等等(后面有文件读取详细操作)
- Scanner(InputStream in) 读取控制台输入
Scanner sc = new Scanner(System.in)
- Scanner(File e) 读取文件
- Scanner(String str) 读取一个字符串
- Scanner(Path p) 读取文件
Scanner sc = new Scanner(Paths.get("1.txt"))
- Scanner(InputStream in) 读取控制台输入
- Scanner的方法
- String nextLine() 读取一行内容,可以包含空格
- String next()读取一个单词,不会包含空格
- int nextInt() double nextDouble()
- Scanner对象可以接受各种输入。比如说控制台的输入、文本流、二进制流等等(后面有文件读取详细操作)
Scanner sc = new Scanner(" ab ac")
sc.next();// ab
sc.nextLine();// ab ac
- Console类
- 由于输入是可见的,Scanner类不适合在控制台读取密码。引入了Console类来解决这个问题。
Console c = System.console()//n不nb
String name = c.readLine("name:");
char[] pass = c.readPassword("password:")//密码必须用char[]接收
格式化输出
System.out.printf()
,用法与c里面基本一致,但丰富了许多。
%s
可以格式化任意对象。对于实现了Formattable接口的将调用formateTo方法;否则调用toString()- 可以用来格式化输出时间,具体的格式化转换符挺多的,待查。
- 也可以使用
String.format()
来创建格式化字符串而不必输出
String msg = String.format("Hello %s ,welcome",name);
3.
文件的输入输出
文件输入
- 用Scanner打开一个文件即可,方法很多,见上面。
- 注意不要
Scanner sc = new Scanner("1.txt")
这里1.txt
只会被当做字符串 - 文件名中若包含
\
记得加转义符C:\\dir\\dir
文件输出
- PrintWriter类
PrintWriter pw = new PrintWriter("1.txt")
和Scanner不同,PW可以直接接收文件名作为参数。若文件不存在将会生成一个新文件。- 可以像输出到System.out一样,对pw使用print、println、printf
- io操作,需要异常处理
- PW操作文件好像会覆盖之前的内容?????
- PrintWriter类
- 文件流用完后必须及时关闭,不然会一直占用空间直至程序结束。???????????????
-
- 文件路径有绝对、相对两种表达方式
- 相对路径是以启动路径作为基准的,。对于IDE来说,启动路径可通过
String dir = System.getproperty("user.dir")
来查看;对于命令行,启动路径是相对于编译器来说的。