Java对文件的写入和读取 (File类详解以及Input,OutputStream用法,注意事项) |
您所在的位置:网站首页 › java判断是否读到文件末尾的方法 › Java对文件的写入和读取 (File类详解以及Input,OutputStream用法,注意事项) |
Java中,操作文件的类有很多, 核心的部分是File类,InputStream,OutputStream类 文章目录 File类通过File类创建文件通过File类创建目录 文件内容的读写 -- 数据流InputStream方法 OutputStream方法.flush缓冲区 File类我们先来看看 File类中的常见属性、构造方法和方法 属性 修饰符及类型属性说明static StringpathSeparator依赖于系统的路径分隔符,String 类型的表示static charpathSeparator依赖于系统的路径分隔符,char 类型的表示构造方法 签名说明File(File parent, String child)根据父目录 + 孩子文件路径,创建一个新的 File 实例File(String pathname)根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径File(String parent, String child)根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示方法 修饰符及返回值类型方法签名说明StringgetParent()返回 File 对象的父目录文件路径StringgetName()返回 FIle 对象的纯文件名称StringgetPath()返回 File 对象的文件路径StringgetAbsolutePath()返回 File 对象的绝对路径StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径booleanexists()判断 File 对象描述的文件是否真实存在booleanisDirectory()判断 File 对象代表的文件是否是一个目录booleanisFile()判断 File 对象代表的文件是否是一个普通文件booleancreateNewFile()根据 File 对象,自动创建一个空文件。成功创建后返回 truebooleandelete()根据 File 对象,删除该文件。成功删除后返回 truevoiddeleteOnExit()根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时才会进行String[]list()返回 File 对象代表的目录下的所有文件名File[]listFiles()返回 File 对象代表的目录下的所有文件,以 File 对象表示booleanmkdir()创建 File 对象代表的目录booleanmkdirs()创建 File 对象代表的目录,如果必要,会创建中间目录booleanrenameTo(File dest)进行文件改名,也可以视为我们平时的剪切、粘贴操作booleancanRead()判断用户是否对文件有可读权限booleancanWrite()判断用户是否对文件有可写权限注意,File类并不是给一个路径得到的就一定是文件 ,还有可能是一个目录!因此存在isDirectory() / isFile()方法来进行判断是否是目录/ 文件. 举一些用例: import java.io.File; import java.io.IOException; public class Demo1 { public static void main(String[] args) throws IOException { //绝对路径 File f = new File("e:/test.txt"); //获取文件父目录 System.out.println(f.getParent()); //e:\ //获取到文件名 System.out.println(f.getName()); //test.txt //获取到文件路径 System.out.println(f.getPath()); //e:\test.txt //获取到绝对路径 System.out.println(f.getAbsolutePath()); //e:\test.txt //获取绝对路径 System.out.println(f.getCanonicalPath()); // E:\test.txt System.out.println("=============="); //构造一个相对路径文件 File f2 = new File("./test.txt"); //获取文件父目录 System.out.println(f2.getParent()); // . //获取到文件名 System.out.println(f2.getName()); // test.txt //获取到文件路径 System.out.println(f2.getPath()); // .\test.txt //获取到绝对路径 System.out.println(f2.getAbsolutePath()); // D:\HaoXiangsWareHouse\JavaCode\blogProject\.\test.txt //获取绝对路径 System.out.println(f2.getCanonicalPath()); // D:\HaoXiangsWareHouse\JavaCode\blogProject\test.txt } }运行结果如下: 有两个点需要注意 指定一个File的pathName的时候 即使该路径并没有所在的文件 / 目录, 仍然可以指定上述Demo中pathName 是 “e:/test.txt” , 但是电脑中并没有 test.txt 文件,但是仍然是能够指定的,因此如果需要判断该路径是否有效, 因此需要使用exists() 之后在判断 isDirectory() / isFile() . public static void main(String[] args) { File f2 = new File("e:/test.txt"); File f = new File("./test.txt"); System.out.println(f.exists()); System.out.println(f.isDirectory()); System.out.println(f.isFile()); }运行结果如下: 还有一个注意的点就是当我们写相对路径的时候, 需要搞清楚当前目录位置在哪里,这里的相对目录位置就是项目所在目录即 此处我建立一个 test.txt文件,这样就可以正确的检测出是文件还是目录了. 运行结果如下: 有了两点注意事项之后, 就可以通过相对路径来进行创建文件操作了. 通过File类创建文件 public class Demo3 { public static void main(String[] args) throws IOException { File f = new File("./test.txt"); System.out.println(f.exists()); System.out.println("创建文件"); //成功会返回一个Boolean类型 System.out.println(f.createNewFile()); System.out.println("创建文件结束"); System.out.println(f.exists()); } }文件当前目录结构如下: (不存在 test.txt文件) 运行结果如下 : 再看目录结构, 就发现 test.txt文件已经被创建好了: 创建单级目录 mkdir(); 该方法会在指定目录位置创建一个目录(文件夹) 但是如果中间目录不存在那么就会创建失败 当前项目位置并不存在 aaa/bbb/ccc目录,此时不创建中间目录 aaa/bbb 查看**mkdir()**方法是否会成功 public static void main(String[] args) { File f = new File("./aaa/bbb/ccc"); System.out.println(f.exists()); System.out.println(f.mkdir()); System.out.println(f.isDirectory()); System.out.println(f.exists()); }运行结果如下: 创建中间目录aaa/bbb后: 可以看到目录ccc创建成功了 创建多级目录 mkdirs() 如果中间目录不存在就会直接把中间目录全部创建 JavaEE目录下是没有aaa/bbb/ccc目录的, 观察是否会被创建成功 运行结果如下 : 显而易见,目录之前不存在, 后来通过 mkdirs()方法 创建了多级目录之后,目录就已经存在啦. InputStream源码如下: public abstract class InputStream implements Closeable { // MAX_SKIP_BUFFER_SIZE is used to determine the maximum buffer size to // use when skipping. private static final int MAX_SKIP_BUFFER_SIZE = 2048; public abstract int read() throws IOException; public int read(byte b[]) throws IOException { return read(b, 0, b.length); } public int read(byte b[], int off, int len) throws IOException { if (b == null) { throw new NullPointerException(); } else if (off |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |