• IO


    1.File类

    File类简介

      在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期等,还可以浏览子目录层次结构。

      File 类表示处理文件和文件系统的相关信息。也就是说,File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性。

    File类的相关方法

    1、构造方法

    File(File parent,String child):以父抽象路径名和子路径名字符串创建新的File实例。

    File(String pathName):给定路径名字符串转换为抽象路径名来创建新的File实例。

    File(String parent,String child):以父路径和子路径名字符串创建新的File实例。

    File(URI uri):将给定的 file: URI转换为抽象路径名来创建新的 File实例。

    1. 常用方法:

     

    方法

    作用

    boolean exists()

    判断抽象路径代表的文件或目录是否存在

    boolean createNewFile()

    创建一个文件,当且仅当具该名称的文件不存在时

    File[] mkdir()

    创建抽象路径名表示的目录中,当且仅当父抽象路径的目录全部存在时才能创建成功

    File[] mkdirs()

    创建抽象路径名表示的目录中,会一次性创建抽象路径中所有的目录,假如某些目录不存在时

    boolean isFile()

    判断抽象路径是否为普通文件

    boolean isDirectory()

    判断抽象路径是否为目录

    boolean delete()

    删除此抽象路径代表的文件或者路径,只有当前文件夹下没有文件的情况才能删除

    File[] listFile()

    抽象路径名表示的目录中的文件

    String getName()

    返回由此抽象路径名表示的文件或目录的名称

    String getParent()

    抽象路径名的父的路径名字符串,如果此路径名未命名为父目录,则返回null

    String getAbsolutePath()

    返回此抽象路径名的绝对路径名字符串

    String[] list(FilenameFilter filter)

    抽象路径名表示的目录中满足指定过滤器的文件和目录

     

    删除文件(文件夹)

    public static void deleteAllFile(String st){
    
    File f = new File(st);
    
    if(!f.exists())
    
    return;
    
     
    
    if(f.isFile())
    
    f.delete();
    
     
    
    deleteDic( f);
    
    }
    
     
    
     
    
    public static void deleteDic(File f ){
    
    File[] listFiles = f.listFiles();
    
    if(listFiles != null && listFiles.length > 0){
    
    for (File file : listFiles) {
    
    if(file.isFile()){
    
    file.delete();
    
    }else{
    
    deleteDic(file);
    
    }
    
    }
    
    f.delete();
    
    }
    
    }
    
     
    
    public static void main(String[] args) throws IOException {
    
    deleteAllFile("D:\FILE");
    
    }

    2.IO简要介绍

    JAVAio相关的类都在java.io包下

    输入流:都是抽象类InputStream(字节输入流)或者Reader(字符输入流)的子类

    输出流:都是抽象类OutputStream(字节输出流)或者Writer(字符输出流)的子类

    说明io流分为字节流和字符流

    文件输入输出流

    数据输入输出流

    ZIP输入输出流

    缓存输入输出流

    3.文件字节流实例

    文件字节流:

    FileInputStream

    FileOutputStream

    public static void readAndWrite() throws IOException{
    
    File f = new File("D:\stream2.txt");
    
    if(!f.exists()){
    
    f.createNewFile();
    
    }
    
    FileInputStream in = new FileInputStream("D:\stream.txt");
    
    //FileOutputStream out = new FileOutputStream(f)
    
    FileOutputStream out = new FileOutputStream(f,true); //这里第二个参数代表在写入的时候不会覆盖文件f原有的数据
    
    byte[] b = new byte[1024];
    
    int len;
    
    while((len = in.read(b)) > 0){
    
    out.write(b, 0, len);
    
    }
    
    in.close();
    out.close();
    
    }
    文件缓存字节流:
    public static void BufferreadAndWrite() throws IOException{ File f = new File("D:\stream2.txt"); if(!f.exists()){ f.createNewFile(); } FileInputStream in = new FileInputStream("D:\stream.txt"); BufferedInputStream bi = new BufferedInputStream(in); FileOutputStream out = new FileOutputStream(f,true); BufferedOutputStream bo = new BufferedOutputStream(out); byte[] b = new byte[1024]; //定义一个数组用来接收读取的字节,每次读取都会覆盖之前的字节 int len; while((len = bi.read(b)) > 0){ bo.write(b, 0, len); } bi.close(); bo.close(); }

     4.ZIP压缩流实例

    4.1 zip压缩文件

    ZipOutputStream

           
    
    package mytest;
    
    import java.io.File;
    
    import java.io.FileInputStream;
    
    import java.io.FileOutputStream;
    
    import java.io.IOException;
    
    import java.util.zip.ZipEntry;
    
    import java.util.zip.ZipOutputStream;
    
    public class ZipStream {
    
    public static void createZip(String file,String zip) throws IOException{
    
    File f = new File(file); //源文件
    
    if(!f.exists()){
    
    return;
    
    }
    
    ZipOutputStream zipout = new ZipOutputStream(new FileOutputStream(zip));  //输出流-目标zip文件
    
    packetZip(f,zipout); // 参数1 源文件  参数2.目标文件输出流
    
    zipout.close();
    
    }
    
    @SuppressWarnings({  "unused" })
    
    public static void packetZip(File f,ZipOutputStream zipout) throws IOException{
    
    byte[] arr = new byte[1024];
    
    if(f.isFile()){  //文件压缩
    FileInputStream in = new FileInputStream(f);
    
    ZipEntry en = new ZipEntry("" + f); //创建要压缩文件的zipEntry
    
    zipout.putNextEntry(en);
    
    int len;
    
    while(( len = in.read())!= -1){
    
    zipout.write(len);  //开始压缩    读是文件字节输入流 FileInputStream in ,写是zaip输出流ZipOutputStream zipout
    
    }
    
    in.close();
    
    }else{
    
    File[] listFiles = f.listFiles();
    
    if(listFiles != null && listFiles.length > 0){
    
    for (File file : listFiles) {
    
    packetZip(file,zipout );
    
    }
    
    }
    
    }
    }
    public static void main(String[] args) { try { createZip("D://HT","D://HT.zip"); } catch (IOException e) { e.printStackTrace(); } } }

    4.2 Zip解压

    /**
    
     * 解压文件
    
     * @param zipfileSt   zip文件系统路径
    
     * @throws IOException
    
     */
    
    public static void decompressionZip(String zipfileSt) throws IOException{
    
    File zf = new File(zipfileSt);
    
    FileInputStream in = new FileInputStream(zf);
    
    ZipInputStream zipin = new ZipInputStream(in);  //读取zip文件的ZipEntry
    
    ZipFile zipfile = new ZipFile(zipfileSt);  //把ZIPEntry转换成输入流
    
    zipin.getNextEntry();  //跳过根目录
    
    ZipEntry entry = null;
    
    
    while((entry = zipin.getNextEntry()) != null && (!entry.isDirectory()) ){
    
    File f  = new File( entry.getName());
    
    if(!f.exists()){
    
    f.getParentFile().mkdirs();
    
    f.createNewFile();
    
    }
    
     
    FileOutputStream out = new FileOutputStream(f);
    
    InputStream inputStream = zipfile.getInputStream(entry); //相对压缩而言,解压多了一个步骤,把entry转换为字节流
    
    byte[] arr = new byte[1024];
    
    while( inputStream.read(arr) != -1){
    
    out.write(arr);  //读是字节流  InputStream inputStream,写是文件字节输出流FileOutputStream out
    
    }
    
    out.close();
    
    inputStream.close();
    
    }
    
    zipfile.close();
    
    zipin.close();
    
    }
  • 相关阅读:
    Xcode 8.2 想使用插件 怎么办? 教你科学的使用插件
    JSAPI_Ticket签名
    Java中HashMap,LinkedHashMap,TreeMap的区别[转]
    微信支付开发,再次签名,APP调用
    微信支付开发,统一下单
    android studio安装插件
    java实现mysql数据库的备份及还原
    java项目中读取src目录下的文件
    eclipse增加浏览器chrome
    cd 命令
  • 原文地址:https://www.cnblogs.com/jthr/p/13204094.html
Copyright © 2020-2023  润新知