Java_IO

Java IO基础

Java IO是什么

Java.io提供了全面的IO接口。包括:文件读写、标准输入输出设备等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。

流是什么

  1. 流可以理解为数据的序列。当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。
    流就像一个通水的管道,连接着数据源和目的地,当需要输入或输出数据时,只需要在数据源和目的地之前连接适当的管道就可以了了。

流的分类

  1. 根据流向分为: 1. 输入流表示一个源读取数据 2.输出流表示向一个目标写入数据

  2. 根据数据传输单位分为:1.字节流:以字节为单位传输数据的流 2.字符流:以字符为单位传输数据的流

  3. 按功能分: 1.节点流: 用于直接操作目标设备的流 2.过滤流:是对一个已存在的流的连接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能

Java IO的作用

  1. 文件访问: File、FileInputStream、FileOutputStream、FileWriter、FileReader
  2. 网络访问:Scoket
  3. 内存缓存访问:
  4. 线程内部通信(管道)
  5. 缓冲
  6. 过滤
  7. 解析
  8. 读写文本 (Readers / Writers)
  9. 读写基本类型数据 (long, int etc.)
  10. 读写对象

文件的CRUD

  1. 创建文件


// 根据文件路径创建文件, 如果文件已存在则不创建
File file = new File(String filePath);
// 根据parent抽象路径名和child路径名字符串创建一个新的文件
File file = new File(File parent, String child);
// 根据 parent 路径名字符串和 child 路径名字符串创建一个新文件
File file = new File(String parent, String child);
2. 查看文件信息

// 测试是否可以读取此抽象路径名表示的文件, 返回boolean类型
file.canRead();
// 测试是否可以修改此抽象路径名表示的文件, 返回boolean类型
file.canWrite();
// 测试此抽象路径名表示的文件或目录是否存在, 返回boolean类型
file.exists();
// 返回此抽象路径名的绝对路径名形式, 返回File类型
file.getAbsoluteFile();
//回此抽象路径名的绝对路径名字符串
file.getAbsolutePath();
// 返回由此抽象路径名表示的文件或目录的名称
file.getName();
// 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null
file.getParent();
// 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
file.getParentFile();
//将此抽象路径名转换为一个路径名字符串
file.getPath();
3. 修改文件信息

    OutputStream out = new FileOutputStream(file);
    out.write('test write to file!');
    out.flush();
    out.close();
    // 设置此抽象路径名指定的文件或目录的最后一次修改时间
    file.setLastModified(long time);
    // 设置此抽象路径名的所有者或所有用户的读权限
    file.setReadable(boolean readable, boolean ownerOnly);
    //标记此抽象路径名指定的文件或目录,从而只能对其进行读操作
    file.setReadOnly();
    // 设置此抽象路径名的所有者或所有用户的写权限
    file.setWriteable(boolean writeable, boolean ownerOnly);
  1. 删除文件
    file.delete();
    #### 目录的CRUD
  2. 创建目录
// 创建此抽象路径名指定的目录
    file.mkdir();
    // 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
    file.mkdirs();
  1. 查看目录的信息
// 测试此抽象路径名表示的文件是否是一个目录
    file.isDirectory();
    //  返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
    file.list();
    // 返回一个抽象路径名数组(File[]),这些路径名表示此抽象路径名表示的目录中的文件
    file.listFile();
### 示例代码

7. 文件CRUD

     private File file;
     // 创建文件
     public void testCreateFile() {
         file = new File("filecrud.txt");
         file = new File("D:\\", "filecrud.txt");
         File parent = new File("D:\\");
         file = new File(parent, "filecrud1.txt");
         // 向文件写入数据,不写入数据则不会创建文件
         try {
             // 实例化OutputStream对象
             OutputStream outputStream = new FileOutputStream(file);
             // 向文件写入数据,
             outputStream.write("test file crud!".getBytes());
             // 清理流中的数据
             outputStream.flush();
             // 关闭输出流
             outputStream.close();
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
     // 查看文件信息
     public void testFileInfo() {
         System.out.println("canRean=" + file.canRead());
         System.out.println("canWrite=" + file.canWrite());
         System.out.println("exists=" + file.exists());
         System.out.println("absoluteFile=" + file.getAbsoluteFile());
         System.out.println("absolutePath=" + file.getAbsolutePath());
         System.out.println("name=" + file.getName());
         System.out.println("parent=" + file.getParent());
         System.out.println("parentFile=" + file.getParentFile());
         System.out.println("path=" + file.getPath());
     }
     // 更新文件信息
     public void testUpdateFileInfo() {
         file.setLastModified(new Date().getTime() - <span class="hljs-number">10000L);
         System.out.println("before read only canWrite=" + file.canWrite());
         file.setReadOnly();
         System.out.println("after read only canWrite=" + file.canWrite());
         System.out.println("before write able canWrite=" + file.canWrite());
         file.setWritable(false);
         System.out.println("after write able canWrite=" + file.canWrite());
         System.out.println("before read able canRead=" + file.canRead());
         file.setReadable(false);
         System.out.println("before read able canRead=" + file.canRead());
         System.out.println("before read able canRead=" + file.canRead());
         file.setReadable(true);
         System.out.println("before read able canRead=" + file.canRead());
     }
     // 删除文件
     public void testDeleteFile() {
         file.delete();
     }
     public static void main(String []args) {
         FileCRUD fileCRUD = new FileCRUD();
         fileCRUD.testCreateFile();
         fileCRUD.testFileInfo();
         fileCRUD.testUpdateFileInfo();
         fileCRUD.testDeleteFile();
     }
    }
  1. 目录CRUD
     File dir = new File("D:\test\testDir");
     public void testCreateDir() {
    // mkdir如果path中是多级目录, 则不能创建目录
     //dir.mkdir();
     dir.mkdirs();
    }
     public void testDirInof() {"D:\\test");
    System.out.println(Arrays.toString(dir.list()));
     System.out.println(dir.isDirectory());
     System.out.println(dir.isFile());
     System.out.println(dir.isHidden());
     System.out.println(Arrays.toString(dir.listFiles()));
    }
     public void testDeleteDir() {` // 如果dir中存在子目录或文件, 则不能删除指定路径的目录
     dir.delete();
     }
     public static void main(String []args) {` DirCRUD dirCRUD = new DirCRUD();
     dirCRUD.testCreateDir();
     dirCRUD.testDirInof();
     dirCRUD.testDeleteDir();
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值