JAVA 加载资源文件的问题

JAVA 加载资源文件的问题,第1张

1.

这一句指定的文件的名字,也就是SysConstants这个类中存在一个叫做SYS_PROPERTYNAME的变量,它的值就是sys.properties,也就是这样的

public static String SYS_PROPERTYNAME="sys.properties",你想在加载sys2.properties文件,只需再增加public static String SYS_PROPERTYNAME2="sys2.properties",再用上面的load方法加载即可。也就是p.load(Tools.class.GetClassLoader().getResourceAsStream(SysCOnstants.SYS_PROPERTYNAME2))即可。

2.通过类装载器来装载资源文件,这样就不必写出资源文件的全路径了。

3.加载后的资源文件你可以理解成一个map(类似),等号前边的是key,等号后边的是值。

步骤:

1、在存放使用资源的res文件夹下的layout文件夹内新建一个XML布局文件,如命名为:page1.xml。

2、在存放资、代码的文件夹下下找到MainActivity.java,双击打开,在onCreate的方法内添加关联代码。

问题:关于一些大型项目中会使用不同语言版本的视图,比如在一个Java Web开发中,在struts中九提供了改种文件的配置项及在View中通过标签<bean:message value="">来根据浏览器不同语言形式来展示页面,实现多语言的互 *** 作。

这里自己将所遇到的这类问题,查看相关资料,通过JDK自带的相关API实现这种国际化 *** 作。

使用到的类主要有:import Java.util.Localeimport java.util.ResourceBundle还需要简单的国家化资源文件(针对不同语言有不同文件 .properties文件,键值对)

比如新建一个包com.xiaoli.test,里面放置两个国际化文件,中文(LDPC.properties)和英文(LDPE.properties)支持:

[java] view plain copy

<p>sys.login.index=index.jsp\u9875</p>

[java] view plain copy

sys.login.index=index.jsp page

上面键值对是指:index.jsp 页

而后建立相关测试类实现如下:

[java] view plain copy

package com.xiaoli.test

import java.util.Locale

import java.util.ResourceBundle

public class ResourceMessage

{

private static ResourceMessage resourceMessage = null

private ResourceBundle resourceMessage_zh = null

private ResourceBundle resourceMessage_en = null

private Locale local

//此时该国际化资源文件为下面的完全限定类名访问,LDP为资源文件前缀

private static final String SOURCE_FILE_ZH= "com.xiaoli.test.LDPC"

private static final String SOURCE_FILE_EN= "com.xiaoli.test.LDPE"

private ResourceMessage()

{

//分别将两个文件绑定到相应的语言环境下

resourceMessage_zh = ResourceBundle.getBundle(SOURCE_FILE_ZH, Locale.CHINA)

resourceMessage_en = ResourceBundle.getBundle(SOURCE_FILE_EN,

Locale.ENGLISH)

}

/**

* 单例模式

* 只创建一个实例

* @return

* @see [类、类#方法、类#成员]

*/

public static ResourceMessage getInstance()

{

if (null == resourceMessage)

{

synchronized (ResourceMessage.class)

{

resourceMessage = new ResourceMessage()

}

}

return resourceMessage

}

public String getMessage(String key)

{

return getMessage(key, local)

}

public String getMessage(String key, Locale local)

{

if (null == local)

{

local = Locale.getDefault()

}

String msg = null

if (Locale.CHINA.equals(local))

{

msg = resourceMessage_zh.getString(key)

}

else if (Locale.ENGLISH.equals(local))

{

msg = resourceMessage_en.getString(key)

}

//如果找不到资源文件,返回key

if (null == msg || "".equals(msg))

{

return key

}

return msg

}

/** 测试方法

* @param args

* @see [类、类#方法、类#成员]

*/

public static void main(String[] args)

{

String key = "sys.login.index"

//String value = ResourceMessage.getInstance().getMessage(key, Locale.ENGLISH)

//使用当前默认的语言环境获取,这里为中文支持

String value = ResourceMessage.getInstance().getMessage(key)

System.out.println(value)

}

}

结果,根据手动设置的不同语言环境可以打印不同的值:

index.jsp页 和 index.jsp page


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8081358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存