1、Path类和Paths类
通过Paths通过一个字符串对象来构造Path对象。File是1.7之前的文件类,之后被Path替代。
Path p1=Paths.get(D:/work/java);
1.1、Path类的方法:
public Path getFileName();根据路径获取文件名称。
public int getNameCount();返回路径中文件名称的数目。
public Path getName(int index);返回指定位置的文件夹名称。
public Path getParent();返回父路径,如果没有返回null。
public Path getRoot();返回跟路径,如果没有返回null。
public boolean isAbsolute();如果是根路径返回true。
publlic Path toAbsolutePath();返回跟路径。
public Path resolve(String path);拼接路径
public Path reslveSibling(String path);将父路径下的字符转换为新路径。
public Path relativize(Path other);构造两个路径之间的路径。
2、Files类
1.1、Files类的方法
public static boolean isWritable(Path path);判断是否可写入
public static boolean exists(Path path);判断是否存在
public static Path createFile(Path path);创建文件
public static boolea isSameFile(Path p1,Path p2);判断是否是同一个文件(路径异常报错)
public static long size(Path path);获取文件的长度(字节)
public static boolean isDirectory(Path path);判断是否是目录(文件夹)
public static Path createDirectory(Path path);创建文件夹
public static Path createDirectories(Path path);可以创建多级目录
public void delete(Path path);删除文件(不存在抛异常)
public void deleteIfExists(Path path);删除文件(不抛异常)
遍历子文件
public static Stream<Path> list(Path dir);//返回目录条目
public static DirectoryStream<Path> newDirectoryStream(Path dir);//返回所有条目
public static DirectoryStream<Path> newDirectoryStream(Path dir,//超载带条件
// Filter是过滤器的意思 DirectoryStream.Filter<? super path> filter);
遍历目录树
public static Stream<Path> walk(Path start,options(一般不写));//访问目录树
public static Stream<Path> find(Path start,int maxDepth,双参数正则表达式,op(一般不写));
//可带条件访问目录树
public static Path walkFileTree(Path path,FileVisitor<? super path>visitor);
//这是一个功能相当强大的目录树访问方法,通过匿名内部类实现了接口,通过四个枚举值:CONTINUE(继续遍历)、SKIP_SIBLINGS(忽略当前同级别目录,返回上级继续遍历)、SKIP_SUBTREE(忽略子集继续遍历)、TERMINATE(终止遍历)实现对目录树的多种操作。
1.2、Files类操作字节流
public static InputStream newInputStream(Path p);//创建可读取文件的输入流(输入程序)
public static OutputStream newOutputStream(Path p);//创建可写入的输出流(程序输出)
public static byte[] readAllBytes(Path p);//从文件中读取所有字节
public static String readString(Path p);//从文件中读取字符串
public static String readString(Path p , Charset cs);//指定字符集读取字符串
public static Lint<String> readAllLines(Path p);//从文件中读取所有行
public static List<String> readAllLines(Path p, Charset cs);//指定字符集读取所有行
public static Path write(Path p,Byte[] b);//写入字节数组
public static Path writeString(Path p,CharSequence sqc,Openoption o);//写入字符串
public static Path writeString(Path p,CharSequence sqc,Charset cs,Openoption o);
//指定字符集写入字符串
public static Path write(Path p,Iterable<? extends CharSequence> lines,Openoption o);
//文本行写入文件
public static Path write(Path p , Iterable<? extends CharSequence> lines, Charset cs,Openoption o);//指定字符集将文本行写入文件
public static path move(Path source , Path target , CopyOptions o);//文件移动或重命名
public static Path copy(Path source , Path target,CopyOptions o);//复制文件
public static long copy(Path source , OutputStream os);//文件的所有字节复制到输出流
public static long copy(InputStream os,Path target,CopyOptiongs o);//将输入流的字节到中
3、字节流
流是源到目的的轨迹,次序是有意义的。输入流只能读取,输出流只能写入。
3.1、FileInputStream
FileInputStream fis = new FileInputStream(String s);//创建文件输入流
int read();//基本获取方法,读取下一个字节
int read(Byte[] b);//读取一定数量的字节,存储在缓冲区数组b中。
int read(Byte[] b,int off ,int len);//读取读取指定范围的字节,存储在缓冲区b中。
void close();关闭流
3.2、FileOutputStream
FileOutputStream fos = new FileOutputStream(String s);//创建文件呢输出流
void write();
voie write(Byte[] b);
void write(Byet[] b,int off , int len);//基本写入方法,与in相似。
void close();//关闭流
void flush();//强制写入
4、字节流Reader和Writer
更适用于操作中文,防止读取或写入半个中文,用法同上。