2016-05-05 4 views
0

Я пытаюсь обновить данные в файле "ex.properties". Текущие данные используются файлом applicationContext.xml. Я пробовал каждое решение, которое я нашел в Интернете, но я все еще не могу определить путь к файлу «ex.properties», когда «CurrencyAddJob.java» пытается достичь и изменить данные.Не удалось найти файл Spring java -.properties

Связанные часть "ex.properties" файла applicationContext.xml:

<bean id="dailyCountJobCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 
    <property name="jobDetail" ref="dailyCountJob"/> 
    <property name="group" value="DailyJobsTriggers"/> 
    <property name="cronExpression" value="${sched1}"/> 
</bean> 

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

<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> 
    <property name="environment"> 
     <bean class="org.springframework.web.context.support.StandardServletEnvironment"/> 
    </property> 
</bean> 

файл "ex.properties":

sched1=0/4 * * * * ? 

место нахождения "ex.properties": SRC/главная/ресурсы/ex.properties

CurrencyAddJob.java: раствор 1:

try { 
      FileInputStream in = new FileInputStream("ex.properties"); 
      Properties props = new Properties(); 

      props.load(in); 
      in.close(); 
      FileOutputStream out = new FileOutputStream("ex.properties"); 

      props.setProperty("sched1", "0/1 * * * * ?"); 
      props.store(out, null); 
      out.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

Там это исключение ловится:

java.io.FileNotFoundException: ex.properties (система не может найти указанный файл)

CurrencyAddJob.java: раствор 2:

try { 
      FileInputStream in = new FileInputStream("C:\Users\Honorius\Desktop\workspace\honoriusProject\src\main\resources\ex.properties"); 
      Properties props = new Properties(); 

      props.load(in); 
      in.close(); 
      FileOutputStream out = new FileOutputStream("C:\Users\Honorius\Desktop\workspace\honoriusProject\src\main\resources\ex.properties"); 

      props.setProperty("sched1", "0/1 * * * * ?"); 
      props.store(out, null); 
      out.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

Там это исключение ловится:

java.io.FileNotFoundException: ex.properties (система не может найти указанный файл)

CurrencyAddJob.java: раствор 3:

try { 
      FileInputStream in = new FileInputStream(new File("ex.properties").getAbsolutePath()); 
      Properties props = new Properties(); 

      props.load(in); 
      in.close(); 
      FileOutputStream out = new FileOutputStream(new File("ex.properties").getAbsolutePath()); 

      props.setProperty("sched1", "0/1 * * * * ?"); 
      props.store(out, null); 
      out.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

Там это исключение перехватывается :

java.io.FileNotFoundException: ex.properties (Система не может найти указанный файл)

Я также изменил каталог «ex.properties», но я не мог избавиться от исключения

Есть ли альтернативное решение? Любой совет будет очень благодарен.

+0

попробовать этот ответ http://stackoverflow.com/a/22097153/3037869 – seti

+0

Backslash в строковых констант нужно экранировать. Напишите '' C: \\ Users \\ Honorius \\ Desktop \\ workspace \\ ... "' вместо '' C: \ Users \ Honorius \ ... "'. – Jesper

+0

@ Jesper, вы правы. Я написал как двойной обратный слэш. В то время как сообщение здесь, я написал одну обратную косую черту. Но это не сработало. – honorius03

ответ

0

Вы можете попробовать это:

try { 
     FileInputStream in = new FileInputStream(this.getClass().getResourceAsStream("/ex.properties")); 
     Properties props = new Properties(); 

     props.load(in); 
     in.close(); 
     FileOutputStream out = new FileOutputStream(new File(this.getClass().getResource("/ex.properties").getFile())); 

     props.setProperty("sched1", "0/1 * * * * ?"); 
     props.store(out, null); 
     out.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
Смежные вопросы