哈士奇发布文件File笔记

文章详细介绍了Java中的File类,包括通过不同方式创建File对象,如使用路径字符串或组合父路径和子路径。此外,还列出了File类的常用方法,如判断文件或目录的存在、大小、最后修改时间等,以及创建、删除文件和目录的函数。同时,文章还展示了如何遍历文件夹,查找特定类型的文件,统计文件夹大小和文件数量。
方法名称说明
public File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child)父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child)父抽象路径名和子路径名字符串创建新的 File实例。

举例  

public class FileDemo {
    public static void main(String[] args) {

        // 方式一:根据字符串表示的路径,变成File对象
        String str = "G:\\a.txt";
        File f1 = new File(str);
        System.out.println(f1);

        // 方式二:根据父级路径【G:\】和子级路径【a.txt】
        String parent = "G:\\";
        String child = "a.txt";
        File f2 = new File(parent, child);
        System.out.println(f2);

        // 方式三:把一个File表示的路径和字符串表示路径进行拼接
        File fileParent = new File("G:\\");
        String child2 = "a.txt";
        File f4 = new File(fileParent, child2);
        System.out.println(f4);

    }
}

1、File的常见成员方法(判断、获取)

方法名称说明
public boolean isDirectory()判断此路径名表示的File是否为文件夹
public boolean isFile()判断此路径名表示的File是否为文件
public boolean exists()判断此路径名表示的File是否存在
public long length()返回文件的大小(字节数量)【获取KB:获取大小/1024】
public String getAbsolutePath()返回文件的绝对路径
public String getPath()返回定义文件时使用的路径
public String getName()返回文件的名称,带后缀
public long lastModified()返回文件的最后修改时间(时间毫秒值)

2、File的常见成员方法(创建、删除)

方法名称说明
public boolean createNewFile()创建一个新的空的文件
public boolean mkdir()创建单级文件夹
public boolean mkdirs()创建多级文件夹
public boolean delete()删除文件、空文件夹

  • createNewFile

    • 如果当前路径表示的文件是不存在的,则创建成功,方法返回true

    • 如果当前路径表示的文件是存在的,则创建失败,方法返回false

    • 如果父级路径不存在,则抛出异常IOException

    • 创建的文件不一定有后缀

  • mkdir

    • windows 当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false

    • mkdir方法只能创建单级文件夹,无法创建多级文件夹

  • mkdirs

    • 既可以创建单级也可以创建多级,所以一般用mkdirs,但mkdirs底层用到了mkdir

  • delete

    • 如果删除的是文件,则直接删除,不走回收站

    • 如果删除的是空文件夹,则直接删除,不走回收站

    • 如果删除的有内容的文件夹,则删除失败

3、File的常见成员方法(获取并遍历)

方法名称说明
public File[] listFiles()获取当前该路径下所有内容【包括隐藏内容】

listFiles

  • 当调用者File表示的路径不存在时,返回null

  • 当调用者File表示的路径是文件时,返回null

  • 当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组

  • 当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回

  • 当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包括隐藏文件

  • 当调用者File表示的路径是需要权限才能访问的文件夹时,返回null

方法名称说明
public static File[] listRoots()列出可用的文件系统根
public String[] list()获取当前该路径下所有内容
public String[] list(FilenameFilter filter)利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles()获取当前该路径下所有内容 【掌握】
public File[] listFiles(FileFilter filter)利用文件名过滤器获取当前该路径下所有内容
public FIle[] listFiles(FilenameFilter filter)利用文件名过滤器获取当前该路径下所有内容

3.1、遍历硬盘查找文件

public class Test2 {
    public static void main(String[] args) {
        File file = new File("G:\\aaa");
        havaAVI(file);
    }

    public static void havaAVI(File file) {
        // 进入aaa 文件夹,而且要获取里面的所有内容
        File[] files = file.listFiles();
        // 遍历
        if (files != null) {
            for (File oldFile : files) {
                // 依次表示 files里面的每一个文件或文件夹路径
                if (oldFile.isFile()) {
                    String fileName = oldFile.getName();
                    if (fileName.endsWith(".doc")) {
                        System.out.println(oldFile);
                    }
                } else {
                    // 如果是一个文件夹,则继续循环遍历
                    havaAVI(oldFile);
                }
            }
        }
    }
}

3.2、删除文件夹

/**
* 删除文件夹
* @param file 要删除的文件夹
*/
public static void deleteFiles(File file) {
    // 得到所有文件
    File[] files = file.listFiles();
    // 遍历
    for (File oldFile : files) {
        if (oldFile.isFile()) {
            oldFile.delete();
        } else {
            deleteFiles(oldFile);
        }
    }
    file.delete();
}

3.3、统计文件夹大小

/**
     * 统计文件夹大小
     * @param file 要统计的文件夹
     * @return 返回大小
     */
public static long getLen(File file) {
    // 定义变量进行累加
    long len = 0;
    // 进入到file文件夹
    File[] files = file.listFiles();
    // 遍历数组
    for (File oldFile : files) {
        // 判断
        if (oldFile.isFile()) {
            // 把当前文件大小进行累加到 len
            len += oldFile.length();
        } else {
            // 如果是文件夹
            len += getLen(oldFile);
        }
    }
    return len;
}

3.4、统计文件夹下各种类型文件的个数

public static HashMap<String, Integer> getCount(File file) {
    File[] files = file.listFiles();
    HashMap<String, Integer> countMap = new HashMap<>();
    for (File f : files) {
        if (f.isFile()) {
            String fileName = f.getName();
            // 获取文件的尾部信息
            String[] arr = fileName.split("\\.");
            if (arr.length >= 2) {
                String endName = arr[arr.length - 1];
                if (countMap.containsKey(endName)) {
                    // 已存在
                    int count = countMap.get(endName);
                    count++;
                    countMap.put(endName, count);
                } else {
                    // 不存在
                    countMap.put(endName, 1);
                }
            }
        } else {
            // sonMap里面是子文件中每一种文件的个数
            HashMap<String, Integer> sonMap = getCount(f);
            // 遍历 sonMap 的键值对进行累加
            Set<Map.Entry<String, Integer>> entries = sonMap.entrySet();
            for (Map.Entry<String, Integer> entry : entries) {
                String key = entry.getKey();
                int value = entry.getValue();
                if (countMap.containsKey(key)) {
                    int countKey = countMap.get(key);
                    countKey = countKey + value;
                    countMap.put(key, countKey);
                } else {
                    countMap.put(key, value);
                }
            }
        }
    }
    return countMap;
}

<think>好的,用户的问题是关于哈士奇的,需要生成详细回答和相关问题。首先,我需要确定用户的具体意图。用户可能想了解哈士奇的基本信息、饲养注意事项、常见行为问题等。由于问题比较宽泛,应该涵盖品种特点、饲养建议、健康管理等方面。 接下来要调用搜索工具获取相关信息。搜索关键词可能包括“哈士奇品种特征”、“哈士奇饲养指南”、“哈士奇常见行为”等。根据搜索结果,整合资料,确保内容准确可靠。 在回答结构上,按照要求分成多个方法或步骤,每个部分换行。避免使用第一人称和步骤词汇,比如“首先”、“然后”。需要特别注意格式规范,尤其是代码和公式部分,但这里可能不需要,不过要保持警惕。另外,引用内容不能集中在末尾,所以每个要点后需要分散引用来源的信息,但这里可能不需要具体引用,因为用户没有要求标明出处。 健康管理部分可能需要提到运动量、饮食需求、常见疾病,比如髋关节发育不良和眼部问题。训练部分要强调耐心和正向激励,避免惩罚。此外,哈士奇的耐寒性和不适合炎热气候的情况需要提及。 生成相关问题时要基于回答内容,比如品种起源、与其他犬种对比、训练具体方法等。确保问题相关且有延伸性,帮助用户进一步探索。 最后检查格式,确保没有使用违禁词汇,相关问题的标题正确,每个问题编号正确,没有多余空格或换行。确保回答详细且符合用户需求,同时严格遵守格式要求。</think>**品种特征** 西伯利亚哈士奇(Siberian Husky)是中型工作犬,起源于西伯利亚东北部。典型特征包括直立的三角形耳朵、浓密双层被毛、杏仁形蓝色/棕色或异色瞳。成年体重约16-27公斤,肩高51-60厘米。基因特征使其适应严寒环境,代谢效率可通过公式 $E = k \cdot (T_{body} - T_{environment})$ 估算能量消耗。 **饲养建议** 每日需至少1-2小时高强度运动(如奔跑、拉雪橇训练),避免因能量过剩引发破坏行为。饮食需高蛋白(建议蛋白质含量≥22%)、低碳水,幼犬阶段需补充钙磷比1.2:1的专用粮。夏季需提供阴凉处和充足饮水,环境温度超过25℃时建议启用降温措施。 **健康管理** 常见遗传疾病包括髋关节发育不良(HD)和进行性视网膜萎缩(PRA)。建议每年进行一次骨科X光检查和DNA检测。疫苗需覆盖犬瘟热、细小病毒及钩端螺旋体病。寿命通常12-15年,老年期需监控甲状腺功能。 **行为训练** 使用正向强化法进行服从训练,指令响应延迟需控制在3秒内。社会化训练应在出生后3-14周开始,接触至少50种不同声音/场景。拆家行为可通过环境丰容改善,例如提供冷冻填充食物的Kong玩具: ```python class EnrichmentToy: def __init__(self, material="橡胶", food_capacity=200): self.material = material self.food_capacity = food_capacity def freeze_food(self, food_type): return f"冷冻{food_type}填充至{self.food_capacity}g" ``` **毛发护理** 换毛期(春秋季)需每日梳理,使用undercoat rake去除底绒。洗澡频率不超过每月1次,避免破坏皮肤油脂层。被毛颜色由ASIP基因调控,黑色系个体携带显性等位基因$A^{a}$,灰色系为隐性纯合体$A^{b}A^{b}$。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值