`

properties 文件中 定义内容 相关问题

    博客分类:
  • java
CSS 
阅读更多

一、在 properties 文件中 定义{ } 会出错

使用MessageFormat.applyPattern时一直抛出异常:

java.lang.IllegalArgumentException: can't parse argument number margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;

经过检查是properties文件中的“{”引起的 ,因为这一段是css的style,但是applyPattern是将这个“{”当成占位符处理了 ,\u007B也试过了,不好使,没办法只能查看java源代码,这个方法的代码如下:

public void applyPattern(String pattern) {
            StringBuffer[] segments = new StringBuffer[4];
            for (int i = 0; i < segments.length; ++i) {
                segments[i] = new StringBuffer();
            }
            int part = 0;
            int formatNumber = 0;
            boolean inQuote = false;
            int braceStack = 0;
            maxOffset = -1;
            for (int i = 0; i < pattern.length(); ++i) {
                char ch = pattern.charAt(i);
                if (part == 0) {
                    if (ch == '\'') {
                        if (i + 1 < pattern.length()
                            && pattern.charAt(i+1) == '\'') {
                            segments[part].append(ch);  // handle doubles
                            ++i;
                        } else {
                            inQuote = !inQuote;
                        }
                    } else if (ch == '{' && !inQuote) {
                        part = 1;
                    } else {
                        segments[part].append(ch);
                    }
                } else  if (inQuote) {              // just copy quotes in parts
                    segments[part].append(ch);
                    if (ch == '\'') {
                        inQuote = false;
                    }
                } else {
                    switch (ch) {
                    case ',':
                        if (part < 3)
                            part += 1;
                        else
                            segments[part].append(ch);
                        break;
                    case '{':
                        ++braceStack;
                        segments[part].append(ch);
                        break;
                    case '}':
                        if (braceStack == 0) {
                            part = 0;
                            makeFormat(i, formatNumber, segments);
                            formatNumber++;
                        } else {
                            --braceStack;
                            segments[part].append(ch);
                        }
                        break;
                    case '\'':
                        inQuote = true;
                        // fall through, so we keep quotes in other parts
                    default:
                        segments[part].append(ch);
                        break;
                    }
                }
            }
            if (braceStack == 0 && part != 0) {
                maxOffset = -1;
                throw new IllegalArgumentException("Unmatched braces in the pattern.");
            }
            this.pattern = segments[0].toString();
    }

 

发现这一段:

if (ch == '\'') {
                        if (i + 1 < pattern.length()
                            && pattern.charAt(i+1) == '\'') {
                            segments[part].append(ch);  // handle doubles
                            ++i;
                        } else {
                            inQuote = !inQuote;
                        }
                    } 

转移符竟然是“ \' ”,想用单引号就写成“ \'\' ” ,想用 { 就写成 “ \'\{

 

 

二、 properties 文件内 换行、输出时 换行

 

Java读取资源文件时内容过长与换行的处理


Java读取Properties文件时碰到两问题

1. 资源文件中的key对应的value过长时,书写不方便,需要换行,若直接回车则回车后的内容被忽略

2. 资源文件中的key对应的value需要换行显示时,若直接回车,则同样丢掉回车后的部分

针对上述问题找到如下解决办法:

1. 内容过长需要换行时拼接个\斜杠,这样\后的内容后正常显示

2. 若内容本身需要换行时则用\n代替回车

 

import java.io.IOException;   
import java.io.InputStream;   
import java.util.Properties;   
  
public class PropertiesTest2   
{   
  
    public static void main(String[] args)   
     {   
         Properties properties = new Properties();   
        try  
         {   
             InputStream inputStream = PropertiesTest2.class.getClassLoader().getResourceAsStream("test.properties");   
             properties.load(inputStream);   
             inputStream.close(); //关闭流  
         }   
        catch (IOException e)   
         {   
             e.printStackTrace();   
         }   
         String key1 = properties.getProperty("key1");   
         String key2 = properties.getProperty("key2");   
         System.out.println(key1);   
         System.out.println(key2);   
           
     }   
  
}  
 

输出结果:

Where did you take the picture? It's so beautiful!
Spring
Hibernate
Ibatis
Velocity
Java
Struts

 

附:test.properties 中的内容

key1=Where did you take the picture? \
It's so beautiful!
key2=Spring\nHibernate\nIbatis\nVelocity\nJava\nStruts
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    怎样读取properties文件内容

    ### 如何使用Java读取properties文件内容 在Java开发中,`properties`文件是一种非常常见的配置文件格式,它主要用于存储程序的各种配置信息。通过这种方式,可以实现程序与配置的分离,便于维护和调整。本文将详细...

    Eclipse和MyEclipse中properties文件支持中文的解决办法

    在使用Eclipse或MyEclipse开发环境中,经常会遇到properties文件中的中文字符显示异常的问题。这主要是因为properties文件默认采用ASCII编码,而中文字符需要使用Unicode编码才能正常显示。本文将详细介绍如何通过...

    c#操作properties,读写配置文件

    // FieldName 是在“Settings.settings”文件中定义的设置名 ``` 3. **修改设置**: ```csharp Properties.Settings.Default.FieldName = "new value"; Properties.Settings.Default.Save(); // Save() 方法会...

    SSM 读取properties文件

    这是一个Spring的bean定义类,它允许我们从properties文件中加载和解析属性值,然后将这些值注入到其他bean的属性中。首先,我们需要创建一个properties文件,例如`application.properties`,并放入项目的类路径下...

    SpringBoot获取yml和properties配置文件的内容

    在提供的示例中,我们看到了一个`application.yml`文件的部分内容,其中定义了自定义的属性和值: ```yaml myYml: simpleProp: simplePropValue arrayProps: 1,2,3,4,5 listProp1: - name: abc value: ...

    Struts 2 properties文件详解

    ### Struts 2 properties文件详解 #### 概述 `struts.properties` 文件是Struts 2框架中的核心配置文件之一,它包含了Struts 2框架运行时所需的一系列配置属性。这些属性决定了Struts 2的行为特征以及与其他组件如...

    log4j.properties配置文件

    通过这个文件,开发者可以定义日志消息的输出方式(例如控制台或文件)、日志级别(如DEBUG、INFO等)以及日志格式等内容。正确配置`log4j.properties`对于应用程序的日志管理和调试至关重要。 #### 二、日志级别 ...

    propertiesEditor

    总的来说,解决`myeclipse10 properties文件中文显示`的问题,需要关注文件编码、内容格式、编辑器配置以及Java代码中的资源加载等多个方面。掌握这些知识点,将有助于提升在多语言项目中的开发效率和质量。在...

    java对properties文件的操作[定义].pdf

    接下来,加载Properties文件的内容到内存中,可以使用`Properties`类的`load()`方法: ```java Properties properties = new Properties(); InputStream inputStream = ClassLoader.getSystemResourceAsStream("info...

    log4j需要的jar以及properties文件

    总的来说,Log4j是一个强大且灵活的日志工具,通过`log4j-1.2.9.jar`和`log4j.properties`这两个文件,我们可以轻松地在Java项目中实现定制化的日志记录,从而提升开发效率和问题排查能力。虽然Log4j 1.x已经较为...

    读取properties文件

    3. **读取properties文件内容** 加载后,可以通过`getProperty()`方法获取键对应的值。例如,获取`username`的值: ```java String username = prop.getProperty("username"); System.out.println("Username: ...

    java类文件通过$获取properties文件的属性值

    3. **测试验证**:编写单元测试或者手动启动应用,访问相关接口来验证`sysId`变量是否正确读取了配置文件中的值。 #### 4. 总结 通过以上步骤,我们可以实现在Java类中通过`${}`语法读取`.properties`文件中的属性...

    使用Ant打包 来调用properties 文件

    在Ant中,我们可以创建一个任务来读取和使用properties文件,这通常用于存储应用的配置信息,如数据库连接字符串、服务器端口等。 首先,我们需要在build.xml文件中引入`&lt;property&gt;`元素来引用外部的properties文件...

    加载properties配置文件的几种方法

    首先,在Spring的配置文件(如`applicationContext.xml`)中定义一个bean,然后指定properties文件的位置: ```xml &lt;value&gt;classpath:config.properties ``` 这样,你就可以在其他bean的配置中用`${...

    log4j.jar包,和log4j.properties配置文件下载

    在"Log4j.jar包,和log4j.properties属性文件打包下载"中,我们有两个关键组成部分: 1. **Log4j.jar**:这是Log4j的主要库文件,包含了所有必需的类和方法,使得程序员能够方便地在代码中插入日志语句。它提供了...

    spring读取properties

    在Spring的配置文件中,首先需要定义一个`PropertyPlaceholderConfigurer` bean,这是Spring用来解析Properties文件并将其值注入到其他bean中的关键组件。如示例所示: ```xml &lt;value&gt;/db.properties ``...

    Liferay 6.0.5 portal.properties 配置文件详解

    在 Liferay 中,`portal.properties` 文件是一个至关重要的配置文件,它定义了系统的全局属性和行为。对于 Liferay 6.0.5 版本,理解并熟练掌握 `portal.properties` 文件的配置至关重要,因为它直接影响到平台的...

    Properties Editor

    然而,直接在文本编辑器中处理包含中文的.properties文件时,往往会出现编码问题,导致中文乱码。为了解决这个问题,我们引入了“Properties Editor”,这是一个专为Struts设计的.properties文件编辑工具,它支持...

    Java读取资源文件时内容过长与换行的处理

    当我们在properties文件中定义属性值时,如果某个值过长或者需要换行,可能会导致读取时出现问题。例如,在`test.properties`文件中有这样的定义: ```properties name=Helloworld\ MyNameisferreousbox ``` 当...

    Java代码实现对properties文件有序的读写的示例

    然而,在读写Properties文件时,需要注意元素的顺序,因为Properties继承自HashTable,直接通过keySet()、keys()或entrySet()方法对Properties中的元素进行遍历时取出来的内容顺序与properties文件中的顺序不一致。...

Global site tag (gtag.js) - Google Analytics