Realizar leitura do nome e tamanho de um arquivo

Bom dia Pessoal!

Tudo Bem?

Gostaria de realizar a leitura do nome de arquivo em uma pasta especifica.

segue o exemplo do código que fiz e os resultados obtidos:

import java.io.File;

public class App {

public static void main(String[] args) {

	File arquivo = new File ("C:/Users/dbrunoro/Desktop/PastaCli/");
			long tamanho = arquivo.length();
			String caminho = arquivo.getAbsolutePath();
			File[] teste = arquivo.listFiles();
			String nome = arquivo.getName();
			System.out.println (tamanho);
			System.out.println(caminho);
			System.out.println(teste);
			System.out.println(nome);
}

}

O resultado que estou obtendo é esse no compilador:
image

Porem eu gostaria de ler as informações que aparecem nesta pasta:

Mais vc não setou nenhum arquivo no caminho, somente a pasta.
Acho que vc deveria ler o vetor de arquivos, já que ele contem os arquivos contidos no diretorio

Poderia me dar um exemplo?

Pois eu apliquei um vetor

import java.io.File;

public class App {

public static void main(String[] args) {

	File arquivo = new File ("C:/Users/dbrunoro/Desktop/PastaCli/");
	File[] arquivos = arquivo.listFiles();
			long tamanho = arquivo.length();
			String caminho = arquivo.getAbsolutePath();
			File[] teste = arquivo.listFiles();
			String nome = arquivo.getName();
			System.out.println (tamanho);
			System.out.println(caminho);
			System.out.println(teste);
			System.out.println(nome);

	 for (File arquivo1 : arquivos) {
	        System.out.println(arquivo1);
	    }
		
			
			

}

}

mas o resultado traz todo o caminho mais o nome do arquivo, porem não traz o tamanho:

image

É que dentro desse laço você precisa mandar ele imprimir o tamanho.

File pasta = new File("C:/Users/dbrunoro/Desktop/PastaCli/");
FileFilter somenteArquivos = (arquivo) -> arquivo.isFile();
for (File arquivo : pasta.listFiles(somenteArquivos)) {
    String nome = arquivo.getName();
    long tamanho = arquivo.length();
    String caminho = arquivo.getAbsolutePath();
    System.out.println(nome);
    System.out.println(tamanho);
    System.out.println(caminho);
}
1 curtida

Boa Tarde staroski!

Tentei compilar o seu código, mas retorna o seguinte resultado:

tentei adaptar o código também, mas o resultado é este:

Estava pesquisando em um site e encontrei essas informações sobre o código:

sobre pegar o nome do arquivo ou diretório:

image

E sobre o tamanho do arquivo:

image

Não entendo o porque a função não traz a informação solicitada.

Não sei se é o correto olhar esta informações.

Não seria la no for

long tamanhoArquivo2 = listaArquivo.lengh();

Não poste imagens, ao invés disso copie e cole o seu código.
Não esqueça de usar o botão </> do fórum.

É que você está chamando o método length() em um objeto File que denota um diretório e não um arquivo, por isso que no meu exemplo eu uso um FileFilter para listar somente arquivos e ignorar diretórios.

Eu não tinha como adivinhar que sua versão do Java é anterior à 8.

É que a linha abaixo é uma expressão lâmbda:

FileFilter somenteArquivos = (arquivo) -> arquivo.isFile();

Ela equivale exatamente à esse código aqui:

FileFilter somenteArquivos = new FileFilter() {

    @Override
    public boolean accept(File arquivo) {
        return arquivo.isFile();
    }
};

Então é só você reescrever o seu código assim:

File pasta = new File("C:/Users/dbrunoro/Desktop/PastaCli/");
FileFilter somenteArquivos = new FileFilter() {

    @Override
    public boolean accept(File arquivo) {
        return arquivo.isFile();
    }
};
for (File arquivo : pasta.listFiles(somenteArquivos)) {
    String nome = arquivo.getName();
    long tamanho = arquivo.length();
    String caminho = arquivo.getAbsolutePath();
    System.out.println(nome);
    System.out.println(tamanho);
    System.out.println(caminho);
}
1 curtida

Muito Obrigado!