1.File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例。
File file=new File("D:\\a\\1.txt");2.File(String parent,String child) 根据指定的父路径和文件名创建File对象
File file=new File("D:\\a","1.txt");3.File(File parent,String child) 根据指定的父文件对象和文件名创建FIle对象
File parentFile=new File("D:\\a"); File file=new File(parentFile,"1.txt");1.boolean createNewFile();指定目录不存在该文件时创建文件并返回true,否则返回false
try { File file=new File("a.txt"); System.out.println(file.createNewFile()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }tip:不使用绝对路径指定时,会在当前项目下创建该文件。
2.boolean mkdir() 当指定的单级文件夹不存在时创建文件夹并返回true,否则返回false
File file2=new File("F://IOTest"); System.out.println(file2.mkdir());3.boolean mkdirs() 当指定的多级文件夹在某一级不存在时,创建多级文件夹并返回true,否则false
File file3=new File("F://IOTest"); System.out.println(file3.mkdirs()); //前面创建过了 false File file4=new File("F://IOTest//a//b"); System.out.println(file4.mkdirs());// 前面没创建过 true4.boolean delete() 删除文件或者单级文件夹,删除文件夹时下面不能用有其它的文件和文件夹
File file3=new File("F://IOTest"); System.out.println(file3.delete()); //还有子目录 false File file4=new File("F://IOTest//a//b"); System.out.println(file4.delete());//无子目录子文件夹 true1.boolean exists() 判断指定路径的文件或文件夹是否为空
File file3=new File("F://IOTest"); System.out.println(file3.exists()); //存在 true File file4=new File("F://IOTest//a//b"); System.out.println(file4.exists());//已删除 false2.boolean isAbsolute() 判断当前路径是否是绝对路径
File file=new File("a.txt"); System.out.println(file.isAbsolute());// false3.boolean isDirectory() 判断当前目录是否存在
File file=new File("a.txt"); System.out.println(file.isDirectory());//false File file2=new File("F://IOTest//a"); System.out.println(file2.isDirectory());//true File file3=new File("F://IOTest//a//b"); System.out.println(file3.isDirectory());//false4.boolean isFile() 判断当前的目录是否一个文件
File file=new File("a.txt"); System.out.println(file.isFile());//true File file2=new File("F://IOTest//a"); System.out.println(file2.isFile());//false File file3=new File("F://IOTest//a//b"); System.out.println(file3.isFile());//falsetip:只会检测当前目录,子目录中的文件不检测。
1.File getAbsoluteFile() 获取文件的绝对路径,返回File对象。
File file=new File("a.txt"); File absoluteFile = file.getAbsoluteFile();2.String getAbsolutePath() 获取文件的绝对路径,返回路径的字符串
File file=new File("a.txt"); System.out.println(file.getAbsolutePath()); System.out.println(new File("").getAbsolutePath());3.String getParent() 获取当前路径的父级路径,以字符串的形式返回该父级路径
File file=new File("a.txt"); System.out.println(file.getParent()); //null File file2=new File("F://IOTest//a"); System.out.println(file2.getParent());//F:\IOTest4.String getName() 获取文件或文件夹的名称
File file=new File("a.txt"); System.out.println(file.getName()); //a.txt File file2=new File("F://IOTest//a"); System.out.println(file2.getName());//a5.String getPath() 获取File对象中封装的路径
File file=new File("a.txt"); System.out.println(file.getPath()); //a.txt File file2=new File("F://IOTest//a"); System.out.println(file2.getPath());//F:\IOTest\a6.long lastModified() 以毫秒值返回最后修改时间
File file=new File("a.txt"); System.out.println(file.lastModified());7.long length() 返回文件的字节数
File file=new File("a.txt"); System.out.println(file.length()); // File file2=new File("F://IOTest//a"); System.out.println(file2.length());//0tip:目录和空文件都会返回0
8.boolean renameTo(File dest) 将当前File对象所指向的路径修改为指定File所指向的路径
File file=new File("F://IOTest//a//new.txt"); // file.createNewFile(); System.out.println(file.renameTo(new File("F://IOTest//new.txt")));9.String[] list() 以字符串数组返回当前路径下所有的文件和文件夹的名称
File file=new File("F://IOTest"); String[] list = file.list(); for(String s:list) { System.out.println(s); }10.File[] listFiles() 以File对象的形式返回当前路径下所有文件和文件夹的名称
File file=new File("F://IOTest"); File[] listFiles = file.listFiles(); for(File file2:listFiles) { System.out.println(file2); }tip:listFiles输出结果包含路径,list输出结果仅包含名称
11.static File[] listRoots() 获取计算机中的所有盘符
File[] listRoots = File.listRoots(); for(File file:listRoots) { System.out.println(file); }1.阻塞和非阻塞 阻塞和非阻塞是进程访问数据,数据未准备就绪时的处理方式,阻塞会停在那里一直等待直到数据准备好,非阻塞则直接返回。
2.同步和异步 同步:处理IO事件的时候,应用程序直接参与IO读写,阻塞在某个方法上等待IO事件完成。 异步:处理IO事件的时候,所有的IO读写交给操作系统去处理,应用程序可以去做别的事情,当IO完成后,操作系统会给程序一个通知。
IO是面向流的,NIO是面向缓冲区的,IO是阻塞的,NIO是非阻塞的。
Channel(通道)、Buffer(缓冲区)、Selector。 Channel是双向的,既可以读也可以写。 Buffer是一个对象,它包含一些要写入或读出的数据。在NIO中,应用程序不能直接对Channel进行操作,而必须通过Buffer来进行。 Selector是一个对象,它可以接收多个Channel注册,监听各个Channel,并根据事件情况决定Channel读写。
1.FileChannel:处理文件的 2.DatagramChannel:处理UDP网络的 3.SocketChannel:处理TCP网络的 4.ServerSocketChannel:处理TCP网络的
1、Buffer的主要属性 capacity:缓冲区的容量,在缓冲区创建时被设定,永远不能改变。 limit:缓冲区的第一个不能被读或者写的元素的索引。 position:下一个要被读或者写的元素的索引。 mark:下一个要被读或写的元素的索引。
2.常见方法 filp():将写模式转换成读模式。 rewind():将position置为0,一遍用于重复度。 clear():清空缓冲区。 compact():清除已经读过的数据。 get():读取数据 put():写入数据
3.存取流程 存数据时position++,调用filp()时,limit=position,position=0,读取时position++
4.直接缓冲区和间接缓冲区 ByteBuffer.allocate(1024)创建间接缓冲区,间接缓冲区在堆中开辟,易于管理,垃圾回收器可以回收,空间有限,读取速度较慢。
ByteBuffer.allocateDirect(1024)创建直接缓冲区,直接缓冲区在物理内存中开辟空间,读写快,但是不受垃圾回收器控制,创建和销毁耗性能。
1.java中File类方法详解 2.NIO中Buffer的各种方法详解及其作用 3.NIO原理详解 4.JAVA NIO详解 5.Java NIO?看这一篇就够了!
