Java: Class File ( a classe File ) - Obtendo informações de arquivos e diretórios

Objetos dessa classe irão servir para objetos de outras classes da java.io package.
Usamos ela para obter informações SOBRE o arquivo ou diretório/pasta, e não sobre seu conteúdo.

Ao contrário de outras classe e do que o nome possa sugerir, essa classe não abre, ou permite o processamento de conteúdo de um arquivo. A sua função está relacionada com o caminho / diretório / endereço dos arquivos ou diretório que desejarmos manipular.
Ela provém, diversos métodos para checagem de existência de arquivos ou diretórios, se é um ou outro, o tamanho do arquivo, a última vez que foi alterado, se é possível escrever ou lê-lo, etc. Adiante explicarei mais detalhadamente alguns dos métodos da classe File.

Dentre os argumentos passados para o constructor de um File object, destacamos:
path -> é o caminho do arquivo ou diretório
absolute path -> todos os diretórios, começando pelo do root, até o arquivo ou diretório de interesse
relative path -> começa no diretório onde a aplicação é executada, que é parente do diretório atual
URL -> endereço na web, Uniform Resource Locators
URI -> endereço no computador, Uniform Resource Identifier. Como o '/home/ProgramacaoProgressiva/' ou 'C:/windows/forever alone' caso ainda esteja no caminho das trevas


Alguns métodos da classe File:
  • boolean canRead() -> retorna true se for possível ler o arquivo, falso o contrário
  • boolean canWrite() -> retorna true se for possível escrever no arquivo, falso o contrário
  • boolean exists() -> retorna true se o diretório ou arquivo se o objeto File existe, falso o contrário
  • boolean isFile() -> retorna true se o argumento passado ao construtor da File é um arquivo, falso o contrário
  • boolean isDirectory() -> retorna true se o argumento passado ao construtor da File é um diretório, falso o contrário
  • boolean isAbsolute() -> retorna true para caso o argumento seja de um caminho absoluto, falso o contrário
  • String getAbsolutePath() -> retorna uma String com o caminho absoluto do diretório ou arquivo
  • String getName() -> retorna uma String com o nome do arquivo ou do diretório
  • String getPath() -> retorna uma Sting com o caminho do arquivo ou diretório
  • String getParent() -> retorna uma String com o caminho do diretório pai (acima;anterior) ao do arquivo ou diretório atual
  • long length() -> retorna um tamanho, em bytes, do arquivo ou inexistente, caso seja diretório
  • long lastModified() -> retorna o tempo em que o arquivo ou diretório foi modificado pela última vez; varia de acordo com o sistema
  • String[] list() -> retorna um array de Strings com o conteúdo do diretório, ou null se for arquivo


Para efeito de fixar conhecimento, um código-fonte vale mais que mil tutoriais (inventei agora, ficou legal?):

FileStudy.java
import java.util.Scanner;
import java.io.File;

public class FileStudy
{
 
    public static void main(String[] args)
    {
        Scanner entrada = new Scanner( System.in );
     
        System.out.print("Entre com um endereço válido de um arquivo: ");
        String caminho = entrada.nextLine();
     
        metodos(caminho);
    }
 
    public static void metodos(String caminho)
    {
        File arquivo = new File(caminho);
     
        if( arquivo.exists() )
        {
            System.out.println("O caminho especificado existe !\nVamos aos testes:\n");
         
            if(arquivo.isAbsolute())
                System.out.println("É um caminho absoluto");
            else
                System.out.println("Não é um caminho absoluto");
         
            if(arquivo.isFile())
                System.out.printf("É um arquivo de tamanho %s bytes\n"
                        + "Útima vez modificado %s\n"
                        + "Cujo caminho é %s\n"
                        + "De caminho absoluto %s\n"
                        + "E está no diretório pai %s\n",
                        arquivo.length(), arquivo.lastModified(), arquivo.getPath(), arquivo.getAbsolutePath(), arquivo.getParent() );
         
            else
            {
                 System.out.println("É um diretório cujo conteúdo tem os seguintes arquivos: ");
                 String[] arquivos = arquivo.list();
             
                 for( String file : arquivos)
                   System.out.println( file );
            }
         
        }
        else
                 System.out.println("Endereço errado");
    }
}

Diferente do comum, não irei comentar nada aqui, pois ao rodar o programa verá o que cada método faz.
Enfim, rode e estude. Está tudo prontinho e mastigado em suas mãos.

5 comentários:

Unknown disse...

Um dos melhores post sobre a Class File muito bom obrigado.

Unknown disse...

Muito Obrigado cara você me salvou.

Unknown disse...

Valeu Java Progressivo!

Unknown disse...

Posetivo pude tirar minha duvida.

Obrigado!

Unknown disse...

cara , show de bola a maneira que voce explica , sem comentarios rsrs

deveria ter o tudo progressivo , ai eu aprenderia tudo por aqui .

obrigado

Veja também: