IO(输入输出)是所有程序员必需的——输入,程序读取外部数据;输出,将程序数据输出到磁盘、光盘等。
Java的IO包下主要包括输入、输出两种IO流,每种输入、输出流又可以分为字节流和字符流。字节流是以字节为单位处理输入、输出操作;字符流是以字符为单位处理输入、输出操作。
Java的IO流使用了一种“装饰器设计模式”,它将IO流分成底层节点流和上层处理流,其中节点流用于和底层的物理存储节点直接关联——不同的物理节点获取的节点流的方式可能存在一定的差异,但程序可以把不同的物理节点流包装成统一的处理流,从而允许程序使用统一的输入、输出代码来读取不同的物理存储节点的资源。
Java 7 在java.nio及其子包下提供了一系列全新的API,这些API是对原有新IO的升级,因此被称为NIO2,通过这些NIO2, 程序可以更高效的进行输入、输出操作
public class MyFile { @Test public void fileNameFilter(){ // 表示当前路径 File file = new File("." ); System.out.println(file.getAbsolutePath()); String [] nameList = file.list((dir,name)->name.endsWith(".java") || new File(name).isDirectory()); for (String name:nameList){ System.out.println(name); } } @Test public void operateDir(){ String filePath = "D:/rding/testfile3/" ; File file = new File(filePath); boolean canMkdir = file.mkdir(); System.out.println(canMkdir); File dirs = new File("d:/rding/testfile3/test31/test32" ); dirs.mkdirs(); File roots[] = File.listRoots(); for ( int i = 0; i < roots.length;i++ ){ System.out.println(roots[i]); } } @Test public void operateFile(){ String filepath = "D:/rding/testfile2/file1.txt" ; File file = new File(filepath); boolean createNewFile; try { createNewFile = file.createNewFile(); System.out.println(createNewFile); // 生成一个文件,文件名是前缀+随机数+后缀名 File tempFile = File.createTempFile("Hello", ".java", new File("D:/rding/testfile2/" )); File delteFile = new File("D:/rding/testfile2/file2.txt" ); boolean deleteFile = delteFile.delete(); System.out.println(delteFile); } catch (IOException e) { e.printStackTrace(); } } @Test public void fileContent(){ String filePath = "D:/rding/testfile2/file.txt" ; File file = new File(filePath); long length = file.length(); System.out.println(length); Date lastModified = new Date(file.lastModified()); System.out.println(lastModified); } @Test public void fileName() { String filePath = "D:/rng/testfile1" ; File file = new File(filePath); String fileName = file.getName(); System.out.println( "fileName : " + fileName); String path = file.getPath(); System.out.println( "path : " + path); String absolutePath = file.getAbsolutePath(); System.out.println( "absolutePath : " + absolutePath); File absoluteFile = file.getAbsoluteFile(); System.out.println( "absoluteFile : " + absoluteFile); File parentFile = file.getParentFile(); System.out.println( "parentFile : " + parentFile); String parentPath = file.getParent(); System.out.println( "parentPath : " + parentPath); boolean canRenameToFile = file.renameTo( new File("D:/rding/testfile2" )); System.out.println( "canRename : " + canRenameToFile); } @Test public void checkFile() { String filePath = "D:/rding/testfile" ; File file = new File(filePath); boolean exists = file.exists(); System.out.println( "exists : " + exists); boolean canWrite = file.canWrite(); System.out.println( "canWrite : " + canWrite); boolean canRead = file.canRead(); System.out.println( "canRead : " + canRead); boolean isFile = file.isFile(); System.out.println( "isFile : " + isFile); boolean isDirectory = file.isDirectory(); System.out.println( "isDirectory : " + isDirectory); boolean isAbsolute = file.isAbsolute(); System.out.println( "isAbsolute : " + isAbsolute); } }