一 点睛
数据流可视为流动数据序列。
当Java需要读数据时,就会开启一个通向数据源的流,这个数据源可以是文件、内存,也可以是网络连接。而当Java程序需要写入数据时,也会开启一个通向目的地的流。流为操作物理设备提供了一致的接口。通过打开流操作关联到文件,通过关闭流操作解除和文件之间的关联。
流通常有两种形式:文本流和二进制流。
文本流每一个字节存放一个ASCII码,代表一个字符。
二进制流也称字节流,它是把数据按其内存中存储的字节形式原封不动地输出或存储。
一般来说,对于纯文本信息(比如字符串),以文本流形式存储较好,而对于数值信息,则用二进制流形式较好。
Java能正常处理UNIX和Windows约定路径分隔符。如果在Windows版本的Java下用斜线(/),路径处理依然正确。如果要在Windows操作系统下使用反斜线(\)来做路径分割符,则需要在字符串内使用它的转义序列(两个反斜线"\\")。Java约定的是UNIX和URL风格的斜线“/”来做路径分隔符。
二 File类实战
1 代码
import java.io.File;
import java.util.Date;
public class FileDemo {
public static void main( String[] args ) {
File f = new File("D:" + File.separator + "1.txt");
if (f.exists() == false) {
try {
f.createNewFile();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
// getName()方法,取得文件名
System.out.println("文件名:" + f.getName());
// getPath()方法,取得文件路径
System.out.println("文件路径:" + f.getPath());
// getAbsolutePath()方法,得到绝对路径名
System.out.println("绝对路径:" + f.getAbsolutePath());
// getParent()方法,得到父文件夹名
System.out.println("父文件夹名称:" + f.getParent());
// exists(),判断文件是否存在
System.out.println(f.exists() ? "文件存在" : "文件不存在");
// canWrite(),判断文件是否可写
System.out.println(f.canWrite() ? "文件可写" : "文件不可写");
// canRead(),判断文件是否可读
System.out.println(f.canRead() ? "文件可读" : "文件不可读");
// / isDirectory(),判断是否是目录
System.out.println(f.isDirectory() ? "是" : "不是" + "目录");
// isFile(),判断是否是文件
System.out.println(f.isFile() ? "是文件" : "不是文件");
// isAbsolute(),是否是绝对路径名称
System.out.println(f.isAbsolute() ? "是绝对路径" : "不是绝对路径");
// lastModified(),文件最后的修改时间
// returns the time file was last modified
long millisec = f.lastModified();
// date and time
Date dt = new Date(millisec);
System.out.println("文件最后修改时间:" + dt);
// length(),文件的长度
System.out.println("文件大小:" + f.length() + " Bytes");
}
}
2 运行
文件名:1.txt
文件路径:D:\1.txt
绝对路径:D:\1.txt
父文件夹名称:D:\
文件存在
文件可写
文件可读
不是目录
是文件
是绝对路径
文件最后修改时间:Fri Jul 19 21:52:02 CST 2019
文件大小:0 Bytes
3 说明
File类只能对文件进行一些简单操作,如读取文件的属性、创建、删除和更名等,不支持文件内容的读写。如果想达到对文件读写操作的目的,就必须通过输入/输出流。