zoukankan      html  css  js  c++  java
  • 文件

    File类

      java.io.File类用于访问文件与目录的信息。

      在传入路径参数时,有两种形式:

      1.绝对路径:传入绝对路径可以保证路径绝对不会出错,但是也就将路径写死了。

      2.相对路径:相对路径需要注意根路径,在File对象中相对路径是相对于项目根路径,而不是src根路径。

      File类常用的构造方法有:

      1.File(String pathname):传入文件的路径创建File对象。

      2.File(String parent, String child):传入文件所在文件目录的路径以及文件名创建File对象。

      3.File(File parent, String child):传入文件所在文件目录的File对象以及文件名创建File对象。

      File类常用的方法有:

      1.String getName():获取文件的文件名。

      2.String getPath():获取文件的路径。如果创建File对象时传入的路径为相对路径,则结果为相对路径;为绝对路径,则结果为绝对路径。

      3.String getAbsolutePath():获取文件的绝对路径。

      4.String getParent():获取文件所在文件目录的路径。如果创建File对象时传入的路径为相对路径,则结果为相对路径;为绝对路径,则结果为绝对路径。

      5.boolean exists():判断File对象是否存在。

      6.boolean isFile():判断File对象是否为文件。

      7.boolean isDirectory():判断File对象是否为文件目录。

      8.boolean canRead():判断File对象是否可读。

      9.boolean canWrite():判断File对象是否可写。

      10.long length():返回文件的大小,单位为字节。

      11.boolean createNewFile() throws IOException:创建文件。

        a.File对象存在,返回false。

        b.如果File对象所在文件目录不存在,则抛出异常。

      12.boolean mkdir():创建文件目录,成功返回true,否则返回false。

        a.File对象存在,返回false。

        b.File对象是文件,返回false。

        c.File对象上一级目录不存在,返回false。

      13.boolean mkdirs():创建整个文件目录,成功返回true,否则返回false。

        a.File对象存在,返回false。

        b.File对象上一级目录不存在,则连同上一级目录一起创建,返回true。

      14.boolean delete():删除,成功返回true,否则返回false。

        a.File对象不存在,返回false。

        b.File对象对应文件目录下还有其他文件或文件目录,返回false。

     1 static void fileMethod(File file) {
     2     System.out.println("是否存在?" + file.exists());
     3     System.out.println("--" + file + "--");
     4     System.out.println("文件名:" + file.getName());
     5     System.out.println("路径:" + file.getPath());
     6     System.out.println("绝对路径:" + file.getAbsolutePath());
     7     System.out.println("所在目录路径:" + file.getParent());
     8     System.out.println("是否为文件目录?" + file.isDirectory());
     9     System.out.println("是否为文件?" + file.isFile());
    10     System.out.println("是否可读?" + file.canRead());
    11     System.out.println("是否可写?" + file.canWrite());
    12 }
    fileMethod
     1 @Test
     2 void testFile() {
     3     File file1 = new File("src\a\b");
     4     System.out.println("是否存在?" + file1.exists());
     5     if (! file1.exists()) {
     6         System.out.println("是否创建成功?" + file1.mkdir());
     7         System.out.println("是否创建成功?" + file1.mkdirs());
     8     }
     9     fileMethod(file1);
    10     System.out.println("-----------------------------------------");
    11     File file2 = new File(file1, "c.txt");
    12     System.out.println("是否存在?" + file2.exists());
    13     if (! file2.exists()) {
    14         try {
    15             System.out.println("是否创建成功?" + file2.createNewFile());
    16         } catch (IOException e) {
    17             e.printStackTrace();
    18         }
    19     }
    20     fileMethod(file2);
    21 }
    testFile

      输出结果:

      

      需要注意的是,一开始文件目录“srca”不存在,所以调用mkdir()方法会返回false,只能调用mkdirs()方法创建。

    RandomAccessFile类

      File类主要用于获取文件的信息,而java.io.RandomAccessFile类主要用于读写文件。RandomAccessFile类可以从任何位置进行读写,相对于文件IO流更具有灵活性。

      RandomAccessFile类常用的构造方法有:

      1.RandomAccessFile(String name, String mode) throws FileNotFoundException:传入文件路径和模式创建RandomAccessFile对象。

      2.RandomAccessFile(File file, String mode) throws FileNotFoundException:传入文件的File对象和模式创建RandomAccessFile对象。

      RandomAccessFile类常用的模式有两种:

      1.只读模式(“r”):文件只能读,不能写。

      2.读写模式(“rw”):文件可以读和写。

      创建RandomAccessFile对象时需要注意,如果文件本身不存在,会出现两种情况:

      1.如果模式为只读模式,则会抛出FileNotFoundException异常。

      2.如果模式为读写模式,则会自动创建对应文件。

      RandomAccessFile类支持文件指针(File Pointer),文件指针用于指示当前读写的位置。创建RandomAccessFile对象时,文件指针指向开始位置。当文件指针指向的位置大于等于文件大小时,表示已经到达末尾。

    RandomAccessFile类常用的方法

    获取信息

      1.long length() throws IOException:获取文件的大小,单位为字节。

      2.long getFilePointer() throws IOException:获取文件指针指向的位置。

    读写

      文件读写需要注意文件指针指向的位置。向文件写入内容时会覆盖原有的内容。

      1.int read() throws IOException:从文件指针指向的位置开始,读取一个字节并返回。如果文件指针指向末尾,则返回-1。

      2.int read(byte b[]) throws IOException:从文件指针指向的位置开始,读取字节数组长度个字节并返回读取的字节数。如果文件指针指向末尾,则返回-1。

      3.int read(byte b[], int off, int len) throws IOException:从文件指针指向的位置开始,读取len个字节,并从b[off]位置开始保存到字节数组中。

      4.String readLine() throws IOException:从文件指针指向的位置开始,读取一行内容。如果文件指针指向末尾,则返回null。

      5.void write(int b) throws IOException:将一个字节写入文件指针指向的位置。

      6.void write(byte b[]) throws IOException:将一个字节数组的内容写入文件指针指向的位置。

      7.void write(byte b[], int off, int len) throws IOException:将一个字节数组从b[off]位置开始的len个字节写入文件指针指向的位置。

      除了以上方法还有readXxx()和writeXxx()方法用于读写一个基本类型的数据。

    文件指针操作

      1.void seek(long pos) throws IOException:指定文件指针指向的位置。

      2.int skipBytes(int n) throws IOException:从文件指针指向的位置开始,移动指定的字节数,并返回成功移动的字节数。

      两个方法的区别:

      1.seek()方法是指定具体的位置,可以在文件的任意位置。

      2.skipBytes()方法是指定移动的字节数,文件指针只会向后移动,如果移动的字节数过大,则文件指针只会移动到末尾。

    文件操作

      1.void setLength(long newLength) throws IOException:设置文件大小。

        a.设置值大于原先的文件大小,则将文件扩大。

        b.设置值小于原先的文件大小,则将文件缩小,并删除后面的内容。

      2.void close() throws IOException:关闭文件。

    示例

     1 @Test
     2 void testRandomAccessFile() {
     3     try {
     4         File f = new File("src\test.txt");
     5         System.out.println("是否存在?" + f.exists());
     6         RandomAccessFile file = new RandomAccessFile(f, "rw");
     7         System.out.println("是否存在?" + f.exists());
     8         System.out.println("文件指针当前的位置:" + file.getFilePointer());
     9         file.write("Hello World".getBytes());
    10         System.out.println("文件指针当前的位置:" + file.getFilePointer());
    11         file.seek(0);
    12         System.out.println("文件指针当前的位置:" + file.getFilePointer());
    13         byte[] b = new byte[5];
    14         file.read(b);
    15         System.out.println(new String(b));
    16         System.out.println("文件指针当前的位置:" + file.getFilePointer());
    17         file.skipBytes(1);   // 跳过空格
    18         System.out.println("文件指针当前的位置:" + file.getFilePointer());
    19         file.read(b);
    20         System.out.println(new String(b));
    21         file.close();
    22     } catch (IOException e) {
    23         e.printStackTrace();
    24     }
    25 }
    testRandomAccessFile

      输出结果:

      

  • 相关阅读:
    A1-2017级算法上机第一次练习赛 E AlvinZH的儿时梦想——木匠篇
    A1-2017级算法上机第一次练习赛 D 水水的Horner Rule
    A1-2017级算法第一次上机练习赛 C AlvinZH去图书馆
    A1-2017级算法上机第一次练习赛 B ModricWang和数论
    A1-2017级算法上机第一次练习赛 A The stupid owls
    P1-2017级第一次算法上机 H 优美序列差值
    P1-2017级算法第一次上机 G SkyLee在GameStop
    P1-2017级第一次算法上机 F SkyLee的艾露猫
    P1-2017级第一次算法上机 E 比特手链
    P1-2017级第一次算法上机 D 芸茹的课堂测试
  • 原文地址:https://www.cnblogs.com/lqkStudy/p/11182767.html
Copyright © 2011-2022 走看看