IO流
用来处理设备之间的数据传输
java对数据的操作是通过流的方式
常用方法:部分截图:
判断:
获取二:
用来处理设备之间的数据传输
java对数据的操作是通过流的方式
JAVA用于操作流的对象都在IO包中
流栈操作数据分为两种:字节流和字符流
按流向分为输入流输出流。
字节流的抽象基类:
inputstream 和 OutputStream;
字符流的抽象基类:
Reader 和 Writer
File类:
构造:
测试demo:
package io;
import java.io.File;
/**
* @author Angus
* File 文件和文件夹的操作
*
* File(String pathname) :根据指定的路径创建File对象
* File(String parent, String child)
* File(File parent, String child)
*
*/
public class FileDemo {
//方式一 一般常用方式一就可以
File file = new File("d:\\a.txt");
File file2 = new File("d:\\aaa");
//方式二
File file3 = new File("d:\\","a.txt");
File file4 = new File("d:\\","aaa");
//方式三
File file5 = new File("d:\\");
File file6 = new File(file5,"aaa");
}
常用方法:部分截图:
创建功能:
package io;
import java.io.File;
import java.io.IOException;
/**
* @author Angus
* File常用方法
* 创建:
* 文件:
* createNewFile() 存在不创建,不存在创建
* 文件夹:
* mkdir() 创建此抽象路径名指定的目录。
* mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
*
* 绝对路径:以盘符开始的路径 写的路径会短一些
* 相对路径:不以盘符开始的路径。永远使用绝对路径这样路径是不会错的。但是路径会很长。。
*/
public class FileDemo2 {
public static void main(String[] args) throws IOException {
//创建文件
File file = new File("d:\\a.txt");
System.out.println(file.createNewFile()); //true
//没有写路径? 这样就在项目路径下
File file2 = new File("2.txt");
System.out.println(file2.createNewFile());//true
//创建目录
File file3 = new File("aaa");
System.out.println("mkdir"+file3.mkdir());
// //创建多级目录,要求父目录必须存在
// File file4 = new File("aaaa\\cccc");
// System.out.println("mkdir"+file3.mkdir());//false
//解决
File file5 = new File("aaa");
File file6 = new File(file5,"ccc");
System.out.println(file5.mkdir());
System.out.println(file6.mkdir());
//优化 mkdirs 不管存在不存在都创建 多级目录一起创建
File file7 = new File("aaaa\\cccc");
System.out.println(file7.mkdirs());
//创建文件
File file8 = new File("c.txt");
System.out.println(file8.mkdir());//true
}
}
删除:
package io;
import java.io.File;
/**
*
* @author Angus
* 删除:
* delete() 删除此抽象路径名表示的文件或目录。
* 注意;java 语言的删除不走回收站,删除不可找回
*/
public class FileDemo3 {
public static void main(String[] args) {
//删除文件
File file = new File("2.txt");
System.out.println(file.delete());
//删除文件夹 如果目录下有内容不能删除,只能一级一级删除
File file2 = new File("aaa");
System.out.println(file2.delete());
}
}
判断:
package io;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Angus
* 获取功能:
* getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
*
* getPath() 将此抽象路径名转换为一个路径名字符串。
* getName() 返回由此抽象路径名表示的文件或目录的名称。
* length() 返回由此抽象路径名表示的文件的长度。
* lastModified() 最后一次修改时间
*/
public class FileDemo4 {
public static void main(String[] args) throws IOException {
File file = new File("aaa\\ccc\\a.txt");
System.out.println("getAbsolutePath"+file.getAbsolutePath());//D:\new_workspace\test1\IoString\aaa\ccc\a.txt
System.out.println("getPath"+file.getPath());//aaa\ccc\a.txt
System.out.println("getName"+file.getName()); //a.txt
System.out.println("length"+file.length()); //字节
System.out.println("lastModified"+file.lastModified()); //1488873726434
Date d = new Date(file.lastModified());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(d));
}
}
获取二:
package io;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
/**
* @author Angus
* 获取功能:
* listRoots() 列出可用的文件系统根。也就是盘符
* list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
* listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
*/
public class FileDemo4 {
public static void main(String[] args) throws IOException {
// File file = new File("aaa\\ccc\\a.txt");
//方式一
File[] listRoots = File.listRoots();
for(File root: listRoots){
System.out.println(root);
}
System.out.println("方式一 -----------------");
//方式二
File file = new File("d:\\");
String[] list = file.list();
for (String string : list) {
System.out.println(string);//输出目录
}
System.out.println("方式二 -----------------");
//方式三
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
System.out.println(file2); //返回的是File对象 对象路径,,那个路径下的
}
}
}
过滤器:
package io;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
/**
* @author Angus
* 需求;
* 获取指定目录下指定后缀的文件名称
* A;先获取指定目录下所有文件夹或者文件夹的File数组,然后遍历判断,满足条件的输出
* B:直接获取指定目录下满足条件的String数组,遍历
*
* list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
*/
public class FileDemo4 {
public static void main(String[] args) throws IOException {
//创建目录
File file = new File("d:\\");
//获取满足的条件
String[] list = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// System.out.println(dir+"---"+name);
File file2 = new File(dir, name);
boolean flag = file2.isFile(); //判断是否文件,输出文件名字
return flag;
}
});
//遍历
for (String string : list) {
System.out.println(string);
}
}
}
最后附上JDK使用文档API 下载