• java文件操作+流的使用


    File类的操作:
    api截图:



    --------------------------------------------------------------------------
    演示:
    package day09;
    import java.io.File;
    import java.io.IOException;
    public class Test07 {
        public static void main(String[] args) {
            File file = new File("d:\fuckyou");
            File file2 = new File("d:\fuckyou");
            try {
                //该方法的作用是创建指定的文件,该方法只能用于创建文件,不能用于创建文件夹,且文件路径中包含的文件夹必须存在
                //file.createNewFile();
                
            /*    file.delete();//该方法的作用是删除当前文件或文件夹。如果删除的是文件夹,则文件夹必须为空。如果需要删除一个非空的文件夹,就必须删除该文件夹内部的每个文件和文件夹,然后再删除
                boolean b = file.exists();//判断文件或者文件夹是否存在
                String s = file.getAbsolutePath();//获取当前文件或者文件夹的绝对路径d:\fuckyou\1
                String name = file.getName();//获取文件或者文件夹的名称,1
                String parent = file.getParent();//获取父路径,d:fuckyou
                boolean directory = file.isDirectory();//判断当前对象是否是目录
        
                boolean file2 = file.isFile();
                    */    
                long l = file.length();//返回文件存储时占用的字节数。该数值获得的是文件的实际大小
                
                //file.listFiles();//返回当前文件夹下的所有对象
                String[] list = file.list();
            
                for (String string : list) {
                    System.out.println(string);
                }
                file.mkdir();//创建当前文件夹,而不创建该路径中其他的文件夹
                file.mkdirs();//创建文件夹,如果当前路径中包含父目录不存在时,也会自动根据需要创建
                file.renameTo(file2);//改名字
                file.setReadOnly();//设置只读
                //System.out.println(list);//返回当前文件夹下的所有文件或者文件夹的名称
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }

    -----------------------------------------------------------------
    流:
    流是一组有顺序,有起点和终点的字节集合,是对数据传输的总称或者抽象,即数据在两个设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

    文件的上传,下载这个过程,都可以看成流
    图片的传输也可以看成流

    流的分类:
    根据处理数据类型的不同分为:字符流,字节流

    根据流的方向分为:输入流,输出流

    根据流的分工分为:节点流和处理流;


    字符流:以字符为单位的传输,(一个字符 = 2个字节,一个汉字占两个字节)
    字节流:以字节为单位的传输
    输入流:读的过程,相当于ctrl+c
    输出流:写的过程,相当于ctrl+v
    节点流:可以直接操作数据源,(数据源:文件中的数据,内存中的数据,假设只能一个字母一个字母的读取数据)
    处理流:只能嵌套在节点流之上,处理数据源,可以一行一行的读取数据,加快处理速度。











    -------------------------------------------------
    拷贝文件,只拷贝第一层拷贝(包括空的文件夹和在根目录下的文件),如果文件夹中有文件,需要用到递归,这个例子没有使用

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    public class copyFile {
        public static void main(String[] args) {
            File file=new File("D:\fuckyou");
            File file2=new File("E:\fuckyou");        
            if(!file2.exists())
            {
                file2.mkdirs(); //如果file2不存在,我首先把它创建出来 
            }
            File[] ff=file.listFiles();
            for(File aa:ff)
            {
                String newName=file2.getAbsolutePath()+"\"+aa.getName();    
                //file2.getAbsolutePath() 新目标的绝对路径   aa.getName()原文件名称 ----->   新目标的绝对路径原文件名称
                if(aa.isDirectory())
                {
                    copyFile.cpDir(newName);
                }else
                {
                    copyFile.cpfile(aa.getAbsolutePath(), newName);
                }
            }
            
        }
        //只创建文件夹
        public static void cpDir(String newPath)
        {
            File file=new File(newPath);
            file.mkdirs();
        }
        //拷贝文件
        public static void cpfile(String oldPath,String newPath)
        {
            try {
                FileInputStream fis=new FileInputStream(oldPath);
                FileOutputStream fos=new FileOutputStream(newPath);
                int num;
                while((num=fis.read())!=-1)
                {
                    fos.write(num);
                }
                fos.flush();
                fos.close();
                fis.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }







  • 相关阅读:
    LeetCode-Longest Substring Without Repeating Characters
    LeetCode-Add Two Numbers
    LeetCode-Two Sum
    品格的塑造
    闰年的来历
    float在内存中的存取方法
    矩阵顺时针旋转90度
    研究生毕业论文查重
    PAT1009
    PAT1008
  • 原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/47da5cfb4b5e6bb734c977df0b0fbe79.html
Copyright © 2020-2023  润新知