Io是什么:java一个重要的核心输入输出流,Java应用常常需要从外界输入数据或者把数据输出到外界
核心五个类:File、InputStream、OutputStream、Reader、Wirter;
一个接口:Serializable。
File类是唯一的一个与文件本身操作有关的类,所谓的文件本身指的是:文件的创建、删除、重命名、取得文件大小、修改日期。
file.createNewFile();创建文件
file.delete();删除文件
file.exists();文件是否已存在
file.getParentFile(); 获取父类文件夹
file.mkdirs();创建文件夹
file.getName();获取文件名
file.isDirectory();是否为文件夹
file.isFile();是否是文件
file.isHidden();是否是隐藏文件
file.lastModified();最后一次修改时间
file.length();文件大小以字节为单位返回
路径分隔符:
在windows操作系统之中,使用“\”作为路径分隔符,而在linux系统下使用“/”作为路径的分隔符,而从实际的开发而言,大部分情况下都会在windows中做开发,而后将项目部署到linux下,那么此时,路径的分隔符都需要进行修改,这样实在是过于麻烦,为此在File类之中提供了一个常量:
public static final String separator
File file = new File("D:" + File.separator + "demo.txt"); // 文件的路径
字节流 InputStream,OutputStream
OutputStream output = new FileOutputStream(file);
String data = "hello world !\r\nhello world !\r\nhello world !\r\nhello world !";
output.write(data.getBytes());
output.close();
InputStream input = new FileInputStream(file);
byte data[] = new byte[1024]; // 假设要读的长度是1024
int f= 0; // 操作data数组的下标
int temp = 0;
// 第一步:temp = input.read(),读取一个单个字节,并且将内容给temp变量
// 第二步:temp != -1,将接收到的temp的数值判断是否为-1,如果为-1则表示退出循环,如果不是,则保存数据
while ((temp = input.read()) != -1) {
data[f++] = (byte) temp; // 保存读取进来的单个字节
}
input.close(); // 关闭
System.out.println(Arrays.toString(data));//输出字节
System.out.println(new String(bytes,"utf-8"));//输出字符
字符流 Writer,Reader
Writer out = new FileWriter(file);
String data = "Hello World .";
out.write(data); // 直接输出字符串
out.flush() ; // 清空缓冲区
out.close(); // 关闭输出
Reader in = new FileReader(file); // 字符输入流
char data[] = new char[1024]; // 开辟数组
int len = in.read(data); // 读取数据
in.close();
没有中文用字节流,否则用字符流。
大文件边读边存:
InputStream input = new FileInputStream(inFile);
OutputStream output = new FileOutputStream(outFile);
int temp = 0;//保存每次读取的个数
byte data[] = new byte[4096]; // 每次读取4096字节
while ((temp = input.read(data)) != -1) { // 将每次读取进来的数据保存在字节数组里,并返回读取的个数
output.write(data, 0, temp); // 输出数组
}
input.close();
output.close();