# 文件模板变量

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

一个 [file template](using-file-and-code-templates.html) 可以包含变量，在应用模板时会被其值替换。 变量是一个以美元符号开头的字符串  `$` ，后跟变量名。 变量名称可以选择性地用花括号括起来。 例如：  `$MyVariable`  和  `${MyVariable}`  是同一个变量的不同表示法。

在模板主体和文件名中可以使用预定义和自定义变量。 例如，如果您在模板的   文件名   字段中输入  `MyFile_${MONTH_NAME_FULL}` ，生成的文件会在四月份创建时命名为  `MyFile_April` 。 这里，  `${MONTH_NAME_FULL}`  是一个 [预定义](#predefined_template_variables)变量。 如果您使用 [自定义](#custom_template_variables)变量，那么 IntelliJ IDEA 会在您基于此模板创建文件时提示您输入变量值。

## 预定义模板变量

文件模板中可以使用以下预定义变量：

|  变量  |  描述  |
| --- | --- |
|   `${DATE}`   |  当前系统日期  |
|   `${DAY}`   |  当前月份中的日期  |
|   `${DIR_PATH}`   |  新文件目录的路径从 [content root](content-roots.html)  |
|   `${DS}`   |  美元符号  `$` 。 该变量用于转义美元符号，使其不被视为模板变量的前缀。  |
|   `${FILE_NAME}`   |  新文件的名称  |
|   `${HOUR}`   |  当前小时  |
|   `${MINUTE}`   |  当前分钟  |
|   `${SECOND}`   |  当前秒  |
|   `${MONTH}`   |  当前月份  |
|   `${MONTH_NAME_FULL}`   |  当前月份的完整名称（January、February 等）  |
|   `${MONTH_NAME_SHORT}`   |  当前月份名称的前三个字母（Jan、Feb 等）  |
|   `${NAME}`   |  新实体的名称（文件、类、接口等）  |
|   `${PACKAGE_NAME}`   |  生成新类或接口文件的目标包的名称  |
|   `${PRODUCT_NAME}`   |  IDE 名称（例如，IntelliJ IDEA）  |
|   `${PROJECT_NAME}`   |  当前项目的名称  |
|   `${TIME}`   |  当前系统时间  |
|   `${USER}`   |  当前用户的登录名  |
|   `${YEAR}`   |  当前年份  |

## 变量方法

由于 IntelliJ IDEA 使用 [Velocity](https://velocity.apache.org/) 作为文件模板的模板引擎，文件模板中的变量可以使用 Java String 方法。 例如，以下是可能的：

* `${NAME.toUpperCase()}` ：将新实体（文件）的名称转换为大写字母。

* `${PROJECT_NAME.length()}` ：打印项目名称的长度。

* `${PRODUCT_NAME.substring(0,5)}` ：打印您使用的 IDE 名称的前五个字符。

## 自定义模板变量

除了预定义模板变量，还可以指定自定义变量。 如果必要，可以在模板中使用  `#set`  指令直接定义自定义变量的值。 在使用相应的变量之前编写指令。

例如，如果您希望使用您的全名而不是通过预定义变量  `${USER}`  定义的登录名，请在自定义变量之前添加以下构造：

```
#set( $MyName = "John Smith" )
Created by: $MyName

```

如果变量的值在模板中未定义，IntelliJ IDEA将会在应用模板时要求您指定该值。

例如，您可以创建如下 Java 文件模板，每次基于此模板创建新文件时，它都会提示您输入方法名称和该方法的参数：

```VELOCITY
#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

public class ${NAME} {
    static void ${MethodName}(String ${Parameter}) {
        System.out.println(${Parameter});
    }
}

```

在此示例中，我们使用了  `${MethodName}`  和  `${Parameter}`  变量，并且没有设置它们的值。 当您基于此模板创建文件时，IntelliJ IDEA 将要求您提供这些变量的值：

![基于文件模板创建文件](https://resources.jetbrains.com.cn/help/img/idea/2026.3/idea_create_java_class_from_template.png)

在生成的文件中，变量将被替换为您在新文件对话框中输入的值（本例中为方法和参数名称）：

```JAVA
package com.example.somepackage;

public class newClass {
    static void newMethod(String myName) {
        System.out.println(myName);
    }
}

```

