2016-05-05 13 views
0

Ich versuche, Daten in der Datei "ex.properties" zu aktualisieren. Die aktuellen Daten werden von der Datei "applicationContext.xml" verwendet. Ich habe jede Lösung ausprobiert, die ich im Internet gefunden habe, aber ich kann immer noch nicht den Pfad der Datei "ex.properties" ermitteln, wenn "CurrencyAddJob.java" versucht, die Daten zu erreichen und zu ändern.Spring java -.properties-Datei kann nicht gefunden werden

Verwandte Teil von "ex.properties" Datei 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" file:

sched1=0/4 * * * * ? 

Lage von "ex.properties": src/main/resources/ex.properties

CurrencyAddJob.java: Lösung 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(); 
     } 

Es wird eine Ausnahme gefangen:

java.io.FileNotFoundException: Lösung 2: ex.properties

CurrencyAddJob.java (Das System nicht die angegebene Datei finden):

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(); 
     } 

Es wird eine Ausnahme gefangen:

java.io.FileNotFoundException: Lösung 3: ex.properties

CurrencyAddJob.java (Das System die angegebene Datei nicht finden kann)

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(); 
     } 

Es wird eine Ausnahme gefangen :

java.io.FileNotFoundException: ex.properties (Das System kannnicht findendie Datei angegeben)

Ich habe auch das Verzeichnis von „ex.properties“ aber ich der Ausnahme erhalten kann nicht

Gibt es eine alternative Lösung zu befreien? Jeder Rat wird sehr geschätzt.

+0

versuchen, diese Antwort http://stackoverflow.com/a/22097153/3037869 – seti

+0

Aufkantung in String-Konstanten muss maskiert werden. Schreiben Sie '" C: \\ Benutzer \\ Honorius \\ Desktop \\ workspace \\ ... "' statt '' C: \ Users \ Honorius \ ... "'. – Jesper

+0

@Jesper, Sie haben Recht. Ich schrieb wie doppelter Backslash. Während Post hier, schrieb ich einen einzelnen Backslash. Aber es hat nicht funktioniert. – honorius03

Antwort

0

Sie können dies versuchen:

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(); 
    } 
Verwandte Themen