Creative Saplings

Java – Leia um arquivo da pasta de recursos

Janeiro 9, 2021
No Comments
Por mkyong | Última atualização: 4 de setembro de 2020
Visualizado: 1.368.612 | +4.610 pv / w

Em Java, podemos usar getResourceAsStream ou getResource para ler um arquivo ou vários arquivos de uma resources pasta ou raiz do caminho de classe.

O método getResourceAsStream retorna um InputStream.

O getResource o método retorna um URL e normalmente o converte em um File; Não funciona no arquivo JAR.

Arquivos na pasta de recursos

1.1 Revise os arquivos no src/main/resources, mais tarde iremos acessar os arquivos e imprima o conteúdo do arquivo.

src / main / resources / database.properties
src / main / resources / json / file1.json
src / main / resources / json / file2.json
src / main / resources / json / sub / subfile1.json

1.2 Por padrão, ferramentas de construção como Maven, Gradle ou a prática comum de Java copiará todos os arquivos de src/main/resources para a raiz de target/classes ou build/classes. Portanto, quando tentamos ler um arquivo de src/main/resources, lemos o arquivo da raiz do classpath do projeto.

1.3 Abaixo está uma estrutura de arquivo JAR. Normalmente, os arquivos na pasta resources serão copiados para a raiz do classpath.

Terminal

Obtenha um arquivo da pasta de recursos.

2.1 O exemplo a seguir demonstra o uso de getResourceAsStream e getResource métodos para ler um arquivo json/file1.json da pasta resources e imprimir o conteúdo do arquivo.

Observação

  • O método getResource não está funcionando no arquivo JAR.
  • O getResourceAsStream funciona em qualquer lugar.
FileResourcesUtils.java

Saída

Terminal

2.2 Agora, empacotamos o projeto em um arquivo JAR e o executamos; desta vez, getResource falhará e retornará NoSuchFileException ou InvalidPathException. Não podemos ler os arquivos dentro do arquivo JAR por meio do URL do recurso.

Execute o arquivo JAR no Linux (Ubuntu), ele lança NoSuchFileException.

Terminal

Execute o arquivo JAR no Windows, ele lança InvalidPathException.

Terminal

PS Este exemplo usa o plugin Maven maven-jar-plugin para criar o arquivo JAR.

pom.xml

Obtenha um arquivo da pasta de recursos – Teste de Unidade

3.1 Colocamos os recursos de teste na pasta src/test/resources para testes de unidade. Normalmente, os arquivos em recursos de teste serão copiados para a pasta target/test-classes.

src / test / resources / json / file1.json
src / test / resources / database.properties

3.2 Funciona da mesma forma que lemos o arquivo de src/main/resources. Usamos os mesmos métodos getResourceAsStream e getResource para ler o arquivo de src/test/resources.

FileResourcesTest.java

Saída

Terminal

Obtenha todos os arquivos de uma pasta de recursos. (Ambiente NÃO JAR)

Se não soubermos o nome do arquivo exato e quisermos ler todos os arquivos, incluindo arquivos de subpasta de uma pasta de recursos, podemos usar o NIO Files.walk para acessar e ler facilmente os arquivos.

4.1 O exemplo abaixo usa Files.walk para ler todos os arquivos de uma pasta src/main/resources/json:

FileResourcesUtils.java

Saída

Terminal

4.2 No entanto, o Files.walk no exemplo 4.1 não pode acessar os arquivos no arquivo JAR diretamente, tente executar o exemplo 4.1 em um ambiente JAR, e ele lança FileSystemNotFoundException.

Terminal

Obtém todos os arquivos de uma pasta de recursos. (Versão JAR)

5.1 Este exemplo mostra como Files.walk uma pasta dentro de um arquivo JAR via FileSystems e URI jar:file:xxx.jar.

A ideia é:

  • Arquivo percorre a pasta dentro de um arquivo JAR usando FileSystems, e obter todos os nomes de arquivos, consulte getPathsFromResourceJAR()
  • Faça um loop de todos os nomes de arquivos, acesse e imprima cada arquivo como no exemplo 2.1, consulte getFileFromResourceAsStream().
FileResourcesUtils.java

Saída

Terminal

Baixe o código-fonte

$ git clone https://github.com/mkyong/core-java

$ cd java-io

  • Files.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 – Sintaxe e formato de um URI
  • Maven – Criar arquivo JAR
  • Provedor de sistema de arquivos Zip
  • exemplos de arquivos Java.walk
  • Java – Obtenha o caminho de um arquivo JAR em execução

mkyong

Fundador da Mkyong.com, adora Java e coisas de código aberto. Siga-o no Twitter. Se você gosta de meus tutoriais, considere fazer uma doação para essas instituições de caridade.

Articles
Previous Post

Como fazer uma captura de tela em um laptop Dell (com imagens)

Next Post

PMC (Português)

Deixe uma resposta Cancelar resposta

Artigos recentes

  • As melhores escolas de fotografia do mundo, 2020
  • Cidadãos soberanos levam sua filosofia antigovernamental para as estradas
  • Guia de custos de reparo de estuque
  • Muckrakers (Português)
  • Oncologia de precisão

Arquivo

  • Fevereiro 2021
  • Janeiro 2021
  • Dezembro 2020
  • Novembro 2020
  • Outubro 2020
  • Setembro 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.