不打开revit判断rvt版本

上次是用程序直接读取rvt,来判断

还有一种方法,使用解压软件解压到文件夹,目录结构为

 其中rvt的版本在BasicFileInfo中

使用Java来判断

复制代码
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RevitVersion {

    public static void main(String[] args) {

        String fileName = "E:\\test\\BasicFileInfo";
        String version = rvtVersion(fileName);
        System.out.println(version);
    }

    public static String rvtVersion(String fileName) {
        File file = new File(fileName);
        System.out.println("fileName:" + fileName);
        BufferedReader reader = null;
        String version = "";
        String MatchVersion = "((?<=Autodesk Revit )\\d{4})";
        String finalStr ="";
        try {
            System.out.println("以行为单位读取文件内容,一次读一整行:");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            int line = 1;
            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                char[] strArr = tempString.toCharArray();
                //处理特殊字符
                for (int j = 0; j < strArr.length; j++) {
                    if ((int) strArr[j] == 0) {
                        strArr[j] = '*';
                    }
                }
                finalStr = String.valueOf(strArr);
                finalStr = finalStr.replace("*", "");
                Pattern pattern = Pattern.compile(MatchVersion);
                Matcher match = pattern.matcher(finalStr);
                if (match.find()) {
                    version = match.group(1);
                    break;
                }
                line++;
            }
            // 显示行号
            System.out.println("line " +  line+ ": " + finalStr);
            reader.close();
            return version;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
        return version;
    }
}
复制代码

 https://sourceforge.net/projects/openmcdf/files/

posted @   慕尘  阅读(588)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示