java.io - 目录 | ||
---|---|---|
标准设备输入/输出 | 标准设备输入/输出:System | |
控制台读写类:Console | ||
文件基本处理 | 文件操作类:File | |
文件搜索类:FileFilter、FilenameFilter | ||
文件任意读写类:RandomAccessFile | ||
输入/输出流 | 输入/输出流 - 分类 | |
输入/输出流 - 实现类 | ||
序列化/反序列化 |
一、标准设备输入/输出类 - System
System是Java系统中一个最常使用的类:Java的系统类。
%%{ init: { 'themeVariables': { 'fontSize': '13px' } } }%% graph LR t(("System
(系统类)")):::p --> T subgraph 静态方法 T([静态方法]):::p T --> 1("标准输出 out
标准输入 in
标准错误输出 err"):::lp T -.- 2("访问外部定义的属性和环境变量"):::info T -.- 3("加载文件和库"):::info T -.- 4("快速复制数组"):::info T -.- 5("取得系统时间:
System.currentTimeMillis()"):::info T -.- 6("系统退出命令:System.exit()"):::info end t --> T2(["静态成员变量"]):::b subgraph "静态成员变量
(用于连接到标准输入/输出控制设备(键盘和控制台))
" T2 --> 7("标准输出流:
static PrintStream out"):::lb T2 --> 8("标准错误输出流:
static PrintStream err"):::lb T2 --> 9("标准输入流:
static PrintStream in"):::lb end 7 -.- 7t("System.out.print()
System.out.println()"):::lg 8 -.- 8t("System.err.print()"):::lg 9 -.- 9t("System.in.read()
System.in.read(b)"):::lg classDef p fill:#ddaebd classDef b fill:#aab7d2 classDef g fill:#9ac5bb classDef lp fill:#f4e4e9 classDef lb fill:#d9dfeb classDef lg fill:#ddebe6 classDef info color:#4e4e52,stroke-dasharray: 3 3, stroke-width: 2px
① out 标准输出流
输出消息到控制台
|
② err 标准错误输出流
输出错误消息到控制台
|
③ in 标准输入流
接收键盘输入
|
1. read()
|
2. read(byte[] b)
|
二、控制台读写类 - Console
Console类优点:
%%{ init: { 'themeVariables': { 'fontSize': '13px' } } }%% graph LR A(["System 缺点"]):::g B(["Console 优点"]):::p A -.- 1("读入的字节数组长度有100的限制:若字符串长度
小于100将会使用方框代替,若大于100将会被抛弃。"):::lg B -.- 2("不需要捕捉异常,该函数没有抛出异常"):::lp B -.- 3("不需要将字节数组转化为字符串,直接读入即字符串"):::lp B -.- 4("可以完整读取一行输入并完整输出,没有抛弃和填充"):::lp classDef p fill:#ddaebd classDef b fill:#aab7d2 classDef g fill:#9ac5bb classDef lp fill:#f4e4e9 classDef lb fill:#d9dfeb classDef lg fill:#ddebe6 classDef info fill:#f6f6f7,color:#737379,stroke-dasharray: 3 3, stroke-width: 2pxConsole类方法可访问与当前Java虚拟机关联的基于字符的控制台设备(若有),常指键盘。
虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式:
%%{ init: { 'themeVariables': { 'fontSize': '14px' } } }%% graph T(["访问与虚拟机关联的控制台设备"]):::p T --> A("① 虚拟机从交互式命令行启动,
且没有重定向标准输入和输出流"):::lp T --> B("② 虚拟机自动启动
(如,由后台作业调度程序启动)"):::lg A -.- a(["控制台存在"]):::p B -.- b(["无控制台"]):::g a -.- |"连接到设备
(键盘)"|1("由此类唯一的实例表示
(调用 System.console() 获得)"):::lp a -.- |"无可用设备"|2("对该方法的调用返回null"):::info %% 将由此类唯一的实例表示
(可通过调用 System.console() 获得)") classDef p fill:#ddaebd classDef b fill:#aab7d2 classDef g fill:#9ac5bb classDef lp fill:#f4e4e9 classDef lb fill:#d9dfeb classDef lg fill:#ddebe6 classDef info fill:#f6f6f7,color:#737379,stroke-dasharray: 3 3, stroke-width: 2px
① 读取信息 readLine()
从控制台读取输入的字符串
|
|
② 输出信息 printf()
从控制台输出消息
|
注:其读写操作是同步的,以保证关键操作能完整完成。因此调用readLine()、printf()时可能阻塞。
③ 读取密码 readPassword()
应用程序需要读取密码或其他安全数据,则应使用 readPassword() 或 readPassword(String, Object…),并在执行后手工将返回的字符数组归零,以最大限度地缩短内存中敏感数据的生存期。
读取密码
|
|
读取密码时添加提示信息
|
- end -
🔖 笔记来自:《Java高手真经(编程基础卷)》