Créer un nouveau fichier de sortie à l'aide de FlatFileItemWriter au printemps-lot

J'ai un simple spring batch emploi - lire un fichier ligne par ligne, de faire quelque chose avec la chaîne d'entrée, et d'écrire sur la sortie. Fichier de sortie contient chaque ligne d'entrée plus certains de l'état de traitement de la ligne (succès/échec.) Le lit un fichier à partir de: <dir>/<inputFolder>/<inputFileName> et écrit des traités de sortie de <dir>/<outputFolder>/<inputFileName> Toutes ces valeurs sont transmises comme jobParameters
Lecteur de fichier est comme suit:

<bean id="itemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
        <property name="resource" value="file:#{jobParameters['cwd']}/#{jobParameters['inputFolder']}/#{jobParameters['inputFile']}" />

        <property name="lineMapper">
          <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">

            <property name="lineTokenizer">
              <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                <property name="delimiter" value="," />
              </bean>
            </property>
            <property name="fieldSetMapper" >
              <bean class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper" />
            </property>
          </bean>
        </property>
    </bean>

Élément de l'écrivain est comme suit:

<bean id="itemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step" >
        <property name="resource" value="#{jobParameters['cwd']}/#{jobParameters['outputFolder']}/#{jobParameters['inputFile']}" />
        <property name="lineAggregator">
            <bean class="org.springframework.batch.item.file.transform.PassThroughLineAggregator" />
        </property>
    </bean>  

Lorsque j'exécute cette tâche, le lecteur lit le fichier correctement, le processeur fait son travail mais FileNotFound exception est levée par le itemWriter

2014/06/27 18-02-31,168:OUT:ERROR[Encountered an error executing the step]
org.springframework.batch.item.ItemStreamException: Could not convert resource to file: [class path resource [S:/temp/seller-optin-batch/output/sellersToOptin_test.txt]]
    at org.springframework.batch.item.file.FlatFileItemWriter.getOutputState(FlatFileItemWriter.java:374)
    at org.springframework.batch.item.file.FlatFileItemWriter.open(FlatFileItemWriter.java:314)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
    Caused by: java.io.FileNotFoundException: class path resource [S:/temp/seller-optin-batch/output/sellersToOptin_test.txt] cannot be resolved to URL because it does not exist
        at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:179)
        at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:48)
        at org.springframework.batch.item.file.FlatFileItemWriter.getOutputState(FlatFileItemWriter.java:371)
        ... 58 more
    2014/06/27 18-02-31,168:ERR:ERROR[Encountered an error executing the step]

    [org.springframework.batch.item.file.FlatFileItemWriter.getOutputState threw org.springframework.batch.item.ItemStreamException: Could not convert resource to file: [class path resource [S:/temp/seller-optin-batch/output/sellersToOptin_test.txt]]]
    Batch Execution Failed!

Chaque fois que le job s'exécute, le fichier de sortie n'existe pas encore. Le itemWriter a pour le créer. Il n'est pas possible à l'aide de FlatFileItemWriter ?

Essayez de préfixe de nom de fichier avec file://
Eh bien, il est certainement possible de créer des fichiers avec un ItemWriter; il me semble que le chemin d'accès de base n'existe pas, vous (ou le compte que vous êtes en cours d'exécution en vertu de l') n'ont pas de droits d'écriture, ou que vous utilisez la mauvaise séparateur de chemin d'accès à votre environnement. Avez-vous essayé d'écrire à un autre endroit? Donner un coup de feu juste en utilisant un nom de fichier et en omettant le chemin.
c'était le problème. Merci pour le tuyau. Stupide erreur
Merci. Je n'ai avoir des autorisations et chemin d'accès de base existe.

OriginalL'auteur chetan | 2014-06-28