Spring批处理的绝对路径

时间:2019-03-07 08:50:09

标签: spring-batch

我有一个Spring Batch流程 我想使用相对路径来写入csv文件中的spring批处理异常,但是它拒绝了,它缺少绝对路径,为什么?

文件为:fo

我的代码:

public class MyJob {

    File fo=new File("C:\\Users\\m.youneb\\Documents\\icdc\\cecWorkplace\\saveLines\\src\\main\\resources\\csv\\skip.csv");

    @Bean
    public Step step() throws IOException {
        return steps.get("step")
                .<Person, Person>chunk(5)
                .reader(itemReader())
                .processor(itemProcessor())
                .writer(itemWriter())
                .faultTolerant()
                .skip(IllegalArgumentException.class)
                .skip(FlatFileParseException.class)
                .skipLimit(100)
                .listener(new MySkipListener(fo))
                .skip(Exception.class)
                .build();
}

public static class MySkipListener implements SkipListener<Person, Person> {

        //private FileWriter fileWriter;
        private BufferedWriter bw = null;

        public MySkipListener(File file) throws IOException {
            //this.fileWriter = new FileWriter(file);
            bw= new BufferedWriter(new FileWriter(file, true));
            System.out.println("MySkipListener =========> :"+file);
        }

        @Override
        public void onSkipInRead(Throwable throwable) {
            if (throwable instanceof FlatFileParseException) {
                FlatFileParseException flatFileParseException = (FlatFileParseException) throwable;
                System.out.println("onSkipInRead =========> :");
                try {
                        bw.write(flatFileParseException.getInput()+"Vérifiez les colonnes!!");
                        bw.newLine();
                        bw.flush();
                  // fileWriter.close();
                } catch (IOException e) {
                    System.err.println("Unable to write skipped line to error file");
                }
            }
        }
 }

谢谢,我需要使用相对路径。

1 个答案:

答案 0 :(得分:0)

要使用文件的相对路径,可以使用:

File fo = new File("src/main/resources/csv/skip.csv"); // should work on windows

这假定您在包含 src/main/resources的目录中运行JVM,该目录通常是典型maven项目的根目录。

希望这会有所帮助。