Java实现字体重命名

Android studio实现个人体重指数计算 Java代码 package com.example.work1; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import andro 阅读详情

编码背景:

1、网上下载的字体名称一般杂乱无章,对字体收集保存造成了巨大的冗余。

2、字体名称不规范,需要查找某款字体时因名字不匹配导致无法找到该字体。

3、网上很多人推荐使用Font Renamer重命名工具,经测试那是一个重复性工作。

 

编码环境JDK1.8+:

  • 新建一个IFionts的类
  /**
     * 将多个目录下的字体文件重命名并且拷贝到一个新文件夹
     *仅限于ttf||ttc||otf类型
     * @param sourcePath
     * @param newPath
     * @throws IOException
     */
    public void copyFolder(String sourcePath, String newPath) throws IOException, FontFormatException {
        // mkdirs()如果父文件夹不存在也会创建
        new File(newPath).mkdirs();
        File fileList = new File(sourcePath);
        String[] strName = fileList.list();
        //清空源文件夹
        //deleteDir(newPath);
        //游标
        File temp = null;
        //字体内英文名
        String originalName = null;
        //字体内中文名
        String familyName = null;
        //最终文件名
        String newName = null;
        for (int i = 0; i < strName.length; i++) {
            // 如果源文件路径以分隔符File.separator /或者\结尾那就sourcePath
            if (sourcePath.endsWith(File.separator)) {
                temp = new File(sourcePath + strName[i]);
            } else {
                temp = new File(sourcePath + File.separator + strName[i]);
            }
            if (temp.isFile()) {
                // 如果游标遇到文件
                FileInputStream in = new FileInputStream(temp);
                // 复制且改名
                Font f = Font.createFont(Font.TRUETYPE_FONT, temp);
                originalName = f.getName().toString();
                familyName = f.getFamily().toString();
                if (familyName.equals(originalName)){
                    newName = familyName;
                }else{
                    newName =familyName+"("+originalName+")";
                }
                File file = new File(newPath + "/" + newName+".ttf");
                FileOutputStream out = new FileOutputStream(file);
                byte[] buffer = new byte[1024 * 8];
                int length;
                while ((length = in.read(buffer)) != -1) {
                    out.write(buffer, 0, length);
                }
                out.flush();
                out.close();
                in.close();
            }
            // 如果游标遇到文件夹
            if (temp.isDirectory()) {
                copyFolder(sourcePath + "/" + strName[i], newPath + "/" + strName[i]);
            }
            System.out.println(temp.getName().toString());
        }
    }
  • 对当前文件夹字体文件重命名
    /**
     * 对当前文件夹字体文件重命名
     *仅限于ttf||ttc||otf类型
     * @param url
     * @throws IOException
     */
    public  void sort(String url) throws IOException {
        File file = new File(url);
        File[] list = file.listFiles();
        //字体内英文名
        String originalName = null;
        //字体内中文名
        String familyName = null;
        //最终文件名
        String newName = null;
        if (file.exists() && file.isDirectory()) {
            for (int i = 0; i < list.length; i++) {
                //获取到当前的文件名
                String name = list[i].getName();
                //获取文件后缀
                String fileTyle=name.substring(name.lastIndexOf("."),name.length());
                //判断字体类型是否可重命名
                if(!(fileTyle.equalsIgnoreCase(".ttf")||fileTyle.equalsIgnoreCase(".ttc")||fileTyle.equalsIgnoreCase("otf"))){
                    continue;
                }
                //获取字体相关信息
                FileInputStream fileInputStream = new FileInputStream(list[i]);
                Font f = null;
                try {
                    f = Font.createFont(Font.TRUETYPE_FONT, fileInputStream);
                } catch (FontFormatException e) {
                    e.printStackTrace();
                    continue;
                }
                originalName = f.getName();
                familyName = f.getFamily();
                fileInputStream.close();
                //String forName = name.replaceAll(name,familyName);
                String forName = String.valueOf(familyName);
                //判断如果中文名与英文名是否相同
                if (originalName.equals(familyName)) {
                    newName = forName;
                } else {
                    newName = forName + "(" + originalName + ")";
                }
                File dest = new File(url + "/" + newName + ".ttf");
                list[i].renameTo(dest);
                System.out.println(dest.getName());
            }
        }
    }
  •  递归清空当前文件夹方法
    /**
     * 清空文件夹
     * @param path
     * @return
     */
    public static boolean deleteDir(String path){
        File file = new File(path);
        //判断是否待删除目录是否存在
        if(!file.exists()){
            System.err.println("The dir are not exists!");
            return false;
        }
        //取得当前目录下所有文件和文件夹
        String[] content = file.list();
        for(String name : content){
            File temp = new File(path, name);
            //判断是否是目录
            if(temp.isDirectory()){
                //递归调用,删除目录里的内容
                deleteDir(temp.getAbsolutePath());
                //删除空目录
                temp.delete();
            }else{
                //直接删除文件
                if(!temp.delete()){
                    System.err.println("Failed to delete " + name);
                }
            }
        }
        return true;
    }
  • 将文件夹目录下文件更改为当前文件夹名字
    /**
     * 将文件夹名字赋值给文件夹下的文件名称
     * @param srcFile
     */
    public static void getAllFilePath(File srcFile){
        //获取给定的File目录下所有的文件或者目录的File数组
        File[] fileArray = srcFile.listFiles();
        //文件夹名字
        String newName= "";
        if (fileArray != null) {
            for (File file : fileArray) {
                //判断该File对象是否是目录
                if (file.isDirectory()) {
                    //是:递归调用
                    getAllFilePath(file);
                    //获取文件夹名字
                    newName = file.getName();
                    String url = file.getPath();
                    File file2 = new File(url);
                    File[] list = file.listFiles();

                    if (file.exists() && file.isDirectory()) {
                        for (int i = 0; i < list.length; i++) {
                            //获取到当前的文件名
                            String oldName = list[i].getName();
                            System.out.println(oldName);
                            //获取文件后缀
                            String fileTyle=oldName.substring(oldName.lastIndexOf("."),oldName.length());
                            //将文件夹名字赋值为文件名
                            oldName = newName;
                            File dest = new File(url + "/" + newName + fileTyle);
                            list[i].renameTo(dest);
                            System.out.println(dest.getName());
                        }
                    }
                } else {
                    System.out.println("程序执行完毕");
                }
            }
        }
    }

 

  • 调用方法
public static void main(String[] args) throws IOException{
        //源文件输入路径
        String oldUrl = "E:\\900款字体合集";
        //重名名后输出路径
        String newFilePath = "P:\\900款字体合集";
        //根据给定的路径创建一个File对象
        File srcFile = new File("P:\\笔刷");
        IFionts iFionts = new IFionts();
        //字体重命名
        iFionts.sort(oldUrl);
        //字体重命名并拷贝
//        iFionts.copyFolder(oldUrl, newFilePath);
        System.out.println("--------------执行完毕----------------");
    }

 

Android体重计算器 代码实现过程 package com.example.zms.myapplication1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.View;//View类 import java.text... 阅读详情

相关推荐

体重档案APP源码和设计报告(含答辩PPT,包调试成功)

1移动媒体程序设计实现课程设计报告 课题名称:体重档案APP小组 小组成员:xxx xxx xxx 目录 1概述31.1项目背景31.2系统目标32需求分析42.1系统功能分析42.1.1数据保存42.1.2图标功能42.1.3诊断功能52.1.4更多功能52.2系统平台62.2.1Android开发环境介绍62.2.2Android开发平台搭建63概要设计83.1总体设计83.1.1系统总体结构83.1.2子系统系统接口93.2数据库设计93.2.1数据库E-R图设计93.2.2数据表设计103.3相

m0_73546099的博客 836

字体重命名工具 fontname.py 教程

字体重命名工具 fontname.py 教程 项目介绍 fontname.py 是一个专为 OpenType 格式的字体文件设计的重命名脚本,支持 .ttf(TrueType)与 .otf(CFF)类型字体。该工具基于 Python 3.6+ 开发,使用了 fonttools 库(需版本 4.0.0+)。通过简单的命令行操作,它能够更新字体的 OpenType 名称表记录,包括家族名、风格等关键...

gitblog_00080的博客 826

安卓APP源码和设计报告——体重档案APP(含答辩PPT)

项目背景胖是历来已久的一种多因素引起的代谢障碍疾病。早在1948年,世界卫生组织已将“肥胖”列入疾病名单。随着全球经济的快速发展,移动互联网的兴起、人民生活水平的提高,加上不合理的膳食结构、不良生活方式等出现,肥胖已成为公共卫生焦点问题。随着人们对肥胖危害的认知度提高,减重的治疗方法也在历久弥新,健康生活,控制体重已日益成为人们所重视的问题。与此同时,大众审美观念的趋势也促使了人们对自身体重的高度重视。

m0_73546099的博客 819

字体重命名工具fontname.py使用指南

字体重命名工具fontname.py使用指南 项目介绍 fontname.py 是一个基于Python 3.6+的开源工具,专门用于重命名TrueType(.ttf)和OpenType(.otf)字体文件中的字体家族名称。由Christopher Simpkins开发并遵循MIT许可协议。此工具依赖于fonttools库,能够方便地批量修改字体文件的元数据,从而允许用户自定义安装的字体名称,使不...

gitblog_00334的博客 870

如何用SQLite Studio分析小米运动数据?睡眠、体重统计实战教程

本文详细介绍了如何使用SQLite Studio分析小米运动数据,包括睡眠和体重统计的实战教程。通过数据导出、预处理和个性化统计,帮助用户深入了解健康数据,发现潜在的健康模式,提升自我健康管理能力。

weixin_30369041的博客 507

Free Font Renamer 字体批量改名工具

Free Font Renamer 字体批量改名的工具,绿色版,无需安装,直接运行。字体都在C盘windows下的fonts文件夹里,手动改名无效,只能借助软件啦。

Windows更改系统字体

选几个先看看效果: 1、下载所给的软件 https://sxf1024.lanzous.com/b09r7rp3e 2、打开noMeiryoUI.exe,先备份一下当前系统的配置,备用 3、名字随便起,位置要记住 4、接下来设置字体,选择你想要的字体 5、“设定全部”即可 6、如果想换回默认,就选第2步的“加载字体设定”,再点下面的设定: 7、或者也可以点这里 8、对于搭配比较满意的设定,可以保存后,分享给好友~~...

xfxuezhang.cn 2万+

FontRename2.1.6-字体重命名工具-支持中文

在IT行业中,尤其是在Windows Presentation Foundation(WPF)的开发中,正确引用和使用自定义字体是常见的需求。"FontRename.rar"是一个针对这种情况设计的工具,它能够帮助开发者更便捷地管理和引用字体文件,从而避免在WPF应用中遇到字体显示问题。 WPF是一个微软推出的用于构建桌面应用程序的技术,它提供了丰富的用户界面功能,包括对图形、动画、媒体和字体的支持。然而,当开发者尝试在WPF应用中使用非系统默认的字体时,可能会遇到一些挑战,比如字体文件的命名问题。 通常,字体文件包含了多种字符集和不同的字体样式(如粗体、斜体等),每个都有自己的内部名称。在WPF中,我们通过`<FontFamily>`属性来引用字体,而这个属性需要的是字体的“PostScript名称”或“全名”。但有些字体文件的全名可能很长,且包含特殊字符,这在代码中直接引用时可能会引起问题。 "FontRename"工具就是为了解决这个问题。它可以读取字体文件的字体全名,并提供一个简单的方法来重命名这些字体,确保它们的名称在WPF应用中能被正确识别。这样,开发者无需直接处理复

如何管理计算机的字体,请同事吃了顿饭才要来的字体管理神器,电脑里的几百个字体有救了!...

原标题:请同事吃了顿饭才要来的字体管理神器,电脑里的几百个字体有救了! 有没有人和小智一样虽然电脑里安装了上百款字体但常用的往往还是那几个导致每次在PS里找字体都要浪费大量时间 而且很多时候网上下载的字体信息很混乱装完想找来用用却 怎么也分辨不出哪款是哪款 但即便如此小智还是不舍得把这些字体删掉万一哪天就派上用场了对吧? 要是有款插件能帮忙管理字体就好了搜索、预览、分类一气呵成等等 这不是做梦还真...

weixin_29090677的博客 1407

字体批量命名FontRen

网上下载过多少字体?乱七八糟的,也不知道都是什么字体了。 有了它,可以批量依据字体内部名称而重命名字体文件名称,这下省心了吧。网上的Free Font Renamer 那都是假的,不支持中文字体名称。真是个好东西。轻轻一点,回到字体文件夹里看吧!!

TTF文件重命名工具

TTFnames,一个用于TTF格式字体文件编辑的小工具。

实验二.任务二.标准体重计算器

运行效果图 MainActivity.java的全部代码 package cn.edu.example.b_2_2_tizhong; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; im

chenshengxiang的博客 701

RenamePro8

RenamePro.exe 重命名

实验二 任务二 体重测量

运行效果图 Mainactivity.java的代码 package cn.edu.example.b_2_2_tizhong; import android.view.View; import android.widget.Button; import android.widget.EditText; import and

Masup123的博客 522

获取内部字体名称命名为文件名,整理字体方便快捷,一键选择要重置的文件夹即可,终极版

获取内部字体名称命名为文件名,整理字体方便快捷,一键选择要重置的文件夹即可,终极版本,小文件包独立程序,放心下载 获取内部字体名称命名,获取内部字体名称命名工具,整理字体工具

Linux 隐藏进程

这种方式属于DKoM(Direct Kernel Object Manipulation)攻击方式了,即直接内核对象操作技术。关于第一种hook方式可以参考上一篇文章。最后推荐一个rootkit工具。

chi's blog 2051
上一篇: com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 serverTimezone设定
XiaoShan2016
博客等级 码龄11年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值