2017-05-09 4 views
0

Ich versuche, eine Datei im Ressourcenordner meiner Spring Boot-Konsole-Anwendung zu lesen, aber ich bekomme Datei nicht gefunden Ausnahme.Textdatei konnte nicht aus Spring Boot-Jar gelesen werden

hier ist mein pom

<resource> 
    <directory>src/main/resources</directory> 
    <includes> 
     <include>**/*.*</include> 
    </includes> 
    </resource> 

Und hier ist die Ausnahme:

java.io.FileNotFoundException: class path resource [9.txt] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/Users/abc/Documents/workspace-sts-3.8.4.RELEASE/xyz/target/xyz-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/9.txt 

ich die xyz-0.0.1-SNAPSHOT.jar Datei geöffnet und die 9.txt ist in BOOT- INF/Klassenordner.

Danke, -DJ

+0

wie sind Sie zu lesen versuchen? – pvpkiran

+0

Ich habe vergessen zu erwähnen, dass ich ClassPathResource verwendet habe. ClassPathResource resource = new ClassPathResource (len + ".txt"); Dateidatei = resource.getFile(); –

Antwort

4

Es ist Frühling Stiefel, die ClassPathResource

@Component 
public class MyBean { 
    @Value("9.txt") 
    private ClassPathResource resource; 

    @PostConstruct 
    public void init() throws IOException { 
     Files.lines(resource.getFile().toPath(), StandardCharsets.UTF_8) 
      .forEach(System.out::println); 
    } 
} 

AKTUALISIERT verwenden lassen: Da ClassPathResource Auflösung als java.io.File unterstützt, wenn die Klassenpfad-Ressource befindet sich in der Datei System, aber nicht für Ressourcen in einem JAR ist es besser, auf diese Weise zu verwenden

@Component 
public class MyBean { 
    @Value("9.txt") 
    private ClassPathResource resource; 

    @PostConstruct 
    public void init() throws IOException { 
     try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) { 
      bufferedReader.lines() 
       .forEach(System.out::println); 
     }   
    } 
} 
+0

Ich habe vergessen zu erwähnen, dass ich ClassPathResource verwendet habe. \t \t \t ClassPathResource resource = neue ClassPathResource (len + ".txt"); Datei file = resource.getFile(); –

+0

@desiJoe Ich habe meine Antwort aktualisiert –

0

das funktioniert für mich!

InputStream in = this.getClass().getResourceAsStream("/" + len + ".txt"); 

da dies wo funktionierte nicht

ClassPathResource resource = new ClassPathResource(len + ".txt"); 
File file = resource.getFile(); 
Verwandte Themen