如何将属性文件中提到的驱动器路径输入到文件中

时间:2012-06-15 09:49:53

标签: java spring file

我必须从UI读取和写入userdata.properties,到目前为止,在我提到文件中的硬编码直接路径之前,所有内容都像读写一样工作

File f = new File("D:\\user\\userdata.properties")

但我的问题是如果我这样提到我无法改变路径,因为我必须提及 另一个path.properties文件中的D:\ user \ userdata.properties,现在我必须在

中读取path.properties文件
File f = new File(........)

请帮我解决这个问题。这就是我目前用来阅读userdata.properties的方法

@RequestMapping("/proxy")
    public String ProxySettings(Model model) throws Exception {



        File f = new File("D:\\sahi\\userdata.properties");
        //String path = MobeeProxyChangeController.class.getResourceAsStream("/property/path.properties").toString();


        Properties properties = new Properties();

        try {
            properties.load(new FileInputStream(f));

            String getHost = properties.getProperty("ext.http.proxy.host");
            String getPort = properties.getProperty("ext.http.proxy.port");

            model.addAttribute("proxyHost", getHost.trim());
            model.addAttribute("proxyPort", getPort.trim());
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "proxyFile";

    }

提前致谢

VENU

2 个答案:

答案 0 :(得分:0)

首先,您不应为每个请求调用load方法。这对你来说非常昂贵。

其次,由于您已经在使用spring,因此无需以这种方式读取属性文件。你可以注射它。

我建议您在班级中为proxyHostproxyPort创建字段作为字段。

public class MyController {
    ...
    private String proxyHost;
    private String proxyPort;

    @RequestMapping("/proxy")
    public String ProxySettings(Model model) throws Exception {
        model.addAttribute("proxyHost", this.proxyHost);
        model.addAttribute("proxyPort", this.proxyPort);

        return "proxyFile";
    }

    // provide setters for the above fields or use @Autowired
}

您的弹簧配置如下:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:userdate.properties" />
</bean>

<bean class="com.foo.MyController">
    <property name="proxyHost" value="${ext.http.proxy.host}"/>
    <property name="proxyPort" value="${ext.http.proxy.port}"/>
</bean>

您可以从类路径或文件系统中读取userdata.properties,具体取决于您保留的位置。

答案 1 :(得分:0)

将您的属性文件放在类路径上,并通过MessageSource

引用它

示例:

属性文件“foo.properties”:

foo=bar
baz=phleem

Java代码:

public static void main(final String[] args) {
    final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("foo");
    System.out.println(messageSource.getMessage("foo", new Object[0], Locale.getDefault()));
}

输出:

  

你可以让Spring注入MessageSource,但我认为你必须通过XML(或通过@Configuration)来实现。但您也可以手动执行此操作,但是,每个类只应执行一次,而不是每次请求执行一次。


好的,这是一个如何使用Spring将它连接在一起的例子:

XML配置:

<bean id="proxySettings" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="userdata" />
</bean>

控制器类:

@Controller
public class ProxyController {

    private static final Locale LOCALE = Locale.getDefault();
    private static final Object[] EMPTY_ARGS = new Object[0];

    @Autowired @Qualifier("proxySettings")
    private MessageSource messageSource;

    @RequestMapping("/proxy")
    public String proxySettings(final Model model) throws Exception {
        model.addAttribute("proxyHost", messageSource.getMessage("ext.http.proxy.host", EMPTY_ARGS, LOCALE));
        model.addAttribute("proxyPort", messageSource.getMessage("ext.http.proxy.port", EMPTY_ARGS, LOCALE));
        return "proxyFile";
    }

}