怎么获取配置文件信息给静态变量|如何在C#控制台程序中读取配置文件中的信息

A. 如何从Properties配置文件读取值

最常用读取properties文件的方法InputStream in = getClass().getResourceAsStream("资源Name");这种方式要求properties文件和当前类在同一文件夹下面。如果在不同的包中,必须使用:InputStream ins = this.getClass().getResourceAsStream("/cn/zhao/properties/testPropertiesPath2.properties");java中获取路径方法获取路径的一个简单实现反射方式获取properties文件的三种方式1 反射方式获取properties文件最常用方法以及思考:Java读取properties文件的方法比较多,网上最多的文章是"Java读取properties文件的六种方法",但在Java应用中,最常用还是通过java.lang.Class类的getResourceAsStream(String name) 方法来实现,但我见到众多读取properties文件的代码中,都会这么干:InputStream in = getClass().getResourceAsStream("资源Name");这里面有个问题,就是getClass()调用的时候默认省略了this!我们都知道,this是不能在static(静态)方法或者static块中使用的,原因是static类型的方法或者代码块是属于类本身的,不属于某个对象,而this本身就代表当前对象,而静态方法或者块调用的时候是不用初始化对象的。问题是:假如我不想让某个类有对象,那么我会将此类的默认构造方法设为私有,当然也不会写别的共有的构造方法。并且我这个类是工具类,都是静态的方法和变量,我要在静态块或者静态方法中获取properties文件,这个方法就行不通了。那怎么办呢?其实这个类就不是这么用的,他仅仅是需要获取一个Class对象就可以了,那还不容易啊-- 取所有类的父类Object,用Object.class难道不比你的用你正在写类自身方便安全吗 ?呵呵,下面给出一个例子,以方便交流。 import java.util.Properties; import java.io.InputStream; import java.io.IOException;/** * 读取Properties文件的例子 * File: TestProperties.java * User: leimin * Date: 2008-2-15 18:38:40 */ public final class TestProperties {private static String param1;private static String param2;static {Properties prop = new Properties();InputStream in = Object. class .getResourceAsStream( "/test.properties" );try {prop.load(in);param1 = prop.getProperty( "initYears1" ).trim();param2 = prop.getProperty( "initYears2" ).trim();} catch (IOException e) {e.printStackTrace();}}/*** 私有构造方法,不需要创建对象*/private TestProperties() {}public static String getParam1() {return param1;}public static String getParam2() {return param2;}public static void main(String args[]){System.out.println(getParam1());System.out.println(getParam2());} } 运行结果:151 152 当然,把Object.class换成int.class照样行,呵呵,大家可以试试。另外,如果是static方法或块中读取Properties文件,还有一种最保险的方法,就是这个类的本身名字来直接获取Class对象,比如本例中可写成TestProperties.class,这样做是最保险的方法2 获取路径的方式:File fileB = new File( this .getClass().getResource( "" ).getPath());System. out .println( "fileB path: " + fileB); 2.2获取当前类所在的工程名:System. out .println("user.dir path: " + System. getProperty ("user.dir"))<span style="background-color: white;">3 获取路径的一个简单的Java实现</span> /**

B. 怎样用Class类(即类的类)来设置获取的静态变量呢

用反射可以得到 如果只需要静态变量可以通过x.getModifiers()来判断 import java.lang.reflect.Field;class A{ public static int a = 4; public static int b = 5; private static int c = 6; } class C{ public static void main(String args[]) throws Exception{ Class x = A.class; //?????我想用x来得到静态变量的值,请不要为我想别的其他办法,这只是个示例程 //序,我的程序要把Class 的x当传参,A也是多态的,必须要用x得到静态变量。 Field[] fields = x.getDeclaredFields(); for(int i=0;i<fields.length;i++){ fields[i].setAccessible(true); if((fields[i].getModifiers() & 8) == 8){ System.out.println(fields[i].get(null)); } } } }

C. gradle(groovy)怎么读取java文件的静态变量

都没有groovy目录,sourceSets应该不需要指定吧,我最后参考了官网的groovy和java混合项目的目录路径,只要有groovy目录就可以了。不过还是遇到点小问题,在build的时候,如果java类引用groovy类,会编译失败,似乎编译的顺序是先java,后groovy,编译的时候引用不到groovy的类

D. springmvc中怎么从配置文件中读取信息

在使用hibernate或者spring的时候,我们往往通过配置文件配置数据库连接属性。但这次项目中并没有用到hibernate和spring,只用到了struts2。要如何实现通过读取文件配置获取属性值呢? 方式一:ResourceBundle这个类可是实现读取properties文件来获取值 在java中: public class ResourceBundleReader { public final static Object initLock = new Object(); private final static String PROPERTIES_FILE_NAME = "property"; private static ResourceBundle bundle = null; static { try { if (bundle == null) { synchronized (initLock) { if (bundle == null) bundle = ResourceBundle.getBundle(PROPERTIES_FILE_NAME,Locale.CHINA); } } } catch (Exception e) { System.out.println("读取资源文件property_zh.properties失败!"); } } public static ResourceBundle getBundle() { return bundle; } public static void setBundle(ResourceBundle bundle) { bundle = bundle; } } 在.properties文件中: driverName=com.mysql.jdbc.Driver url=xxxxx/:3307/9zgame? user=root password=xxxxxx 文件名字为:property_zh.properties。后zh根据Locale.CHINA一致的,如果Locale.ENGLISH,则文件名为:property_en.properties 方式二:使用commons组件。

E. 如何在C#控制台程序中读取配置文件中的信息

给个例子你:配置文件App.config如下:<?xml version="1.0" encoding="utf-8" ?><configuration> <appSettings> <add key="InvariantInfo" value="true"/> </appSettings></configuration>使用if (ConfigurationManager.AppSettings["InvariantInfo"] != "false"){} 绝对没问题的,我都取过N遍了,不行你把你的配置文件删除了,再到VS里面添加一个app.config文件,把内容复制过来 我是用的VS,用CSC编译可能是少了参数了你

F. .net中如何把数据存放到配置文件中,及如何获取修改配置文件中的数据。

把一些配置信息放在配置文件里,方便自定义修改。大部分数据还是要放数据库的。定义全部变量,到时候就写死了,你怎么修改,而且还不安全。

G. c# mvc 怎么实时获取后台静态变量值

<form id="form1" runat="server">要改成<form iid="form1" runat="server" action="/Index/Logindo" method="post">首先 你要在对应的Controller在创建 public ActionResult Logindo(string UserName,string Password){//查询后台数据//判断是否存在 有就成功登录 没有就失败。}还就是MVC不建议使用 asp:Login控件来做。里面的事件很容易跟 Controller 的atcion冲突的

H. ci怎么从配置文件读取变量

你不用读取这个配置文件, 直接加载文件即可。如在param中定义了A=1B=3你需要在myshell中获取param文件中的变量, 可以这样写. /PATH/param (或者source /PATH/param)echo $A $B

I. 如何在spring中读取properties配置文件里面的信息

首先我使用的是注解的方式。

创建properties配置文件Key=value的形式

在spring的配置文件中进行导入专代码如下:属

<util:properties id="test" location="classpath:test.properties"/>

提示:路径问题自己把握

3.在你需要使用的类中这样:

private @Value("#{test['isOpen']}") String isOpen;

记得写getset方法

isOpen这个在test.properties中是这样的:

isOpen=true

如果有任何问题,可追加。望采纳

J. 如何用ResourceBundle来读取配置文件

对于Java基础很好的人来说,这个应该是简单的不能再简单的了。不过估计一些ja va新手不一定会知道(比如我,上次为别人写一个东西,需要从外存读文件来设置对象的值,因为不知道有ResourceBundle这种东西,就自己用FileReader在那搞,折腾了半天,最后还不能把配置文件和jar包打在一起发布,郁闷)。我们可以在每个对象中用ResourceBundle来读配置文件设置自己的值,也可以用一个固定的对象去读取然后保存下来以便以后使用。在每个class中都去读配置文件会导致代码散乱,所以,只用一个class来进行读取是比较合理的做法。另外,由于I/O的速度比较慢,如果负责读取配置文件的class是在每次用到这些配置项的时候去读文件,就容易成为性能上的瓶颈。为避免这样的情况,可以在初始化的时候就把配置项一次全部读入,并保存在静态成员变量中。不过不排除会有对配置项进行动态读取的需求(因为某些应用是不能停掉的,比如应用服务器。在这些应用运行期间更新了配置文件,就需要在不不关闭应用的情况下重新读入配置项)。以下的例子只考虑了静态读取的情况,如果是动态读取,则可以把读取配置文件的代码放到某个方法中,通过对某个事件的响应来调用该方法更新配置项。假设我们用来读取配置文件的class叫TestResourceBundle,配置项的值来自一个叫property_en.properties的文件(该文件应该放到TestResourceBundle所对应的CLASSPATH的目录),有两个值需要配置:name和value。首先,需要在该class中定义一些字符串常量,如下:public static final String PROPERTIES_FILE_NAME = "property";public static final String MY_NAME_KEY = "name";public static final String MY_VALUE_KEY = "value";其中PROPERTIES_FILE_NAME指出了文件的名字。实际读取的文件应该是property_en.properties,但是只需要告诉ResourceBundle文件名是"property"就足够了。下划线和后面的"en"表示的是本地化信息。这里的en代表"ENGLISH",后缀properties是默认的。MY_NAME_KEY和MY_VALUE_KEY表示配置项在配置文件中的名字,用ResourceBundle的getString方法根据这些名字去读取相应的值。然后,定义需要配置的变量。这些变量应该是静态的:private static String myName;private static String myValue;然后进行静态初始化:static {try {ResourceBundle bundle = ResourceBundle.getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);myName = bundle.getString(MY_NAME_KEY).trim();myValue = bundle.getString(MY_VALUE_KEY).trim();}catch(Exception ex) {System.err.println( "[Property]:Can't Load property.properties");myName = "default name";myValue = "default value";System.out.println( "myName will use the default value: " + myName);System.out.println( "myValue will use the default value: " + myValue);}}ResourceBundle bundle = ResourceBundle.getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);这行代码初始化了一个ResourceBundle,Locale.ENGLISH用于指明本地化情况,因此会从"property_en.properties"中去读取配置项。如果是Locale.CHINA,则会从property_zh.properties中读取。这种机制使得程序的本地化变得简单。myName = bundle.getString(MY_NAME_KEY).trim();这行代码读入配置文件中名为"name"的变量的值,并赋给静态变量myName。此外这段代码还包含了例外处理,当读取失败的时候,配置项会使用缺省值。这样,该类就通过ResourceBundle读取外存上的配置文件对数据进行了配置。property_en.properties文件的内容如下# properties sample#name=segavalue=100其中以'#'开头的行为注释,ResourceBundle在遇到这些行的时候会忽略掉。以下为完整的测试代码:public class TestResourceBundle {public static final String PROPERTIES_FILE_NAME = "property";public static final String MY_NAME_KEY = "name";public static final String MY_VALUE_KEY = "value";private static String myName;private static String myValue;static {try {ResourceBundle bundle = ResourceBundle.getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);myName = bundle.getString(MY_NAME_KEY).trim();myValue = bundle.getString(MY_VALUE_KEY).trim();}catch(Exception ex) {System.err.println( "[Property]:Can't Load property.properties");myName = "default name";myValue = "default value";System.out.println( "myName will use the default value: " + myName);System.out.println( "myValue will use the default value: " + myValue);}}public void print() {System.out.println("My name is: " + myName);System.out.println("My value is: " + myValue);}public static void main(String[] args) {TestResourceBundle test = new TestResourceBundle();test.print();}}


赞 (0)