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:
Um dos melhores post sobre a Class File muito bom obrigado.
Muito Obrigado cara você me salvou.
Valeu Java Progressivo!
Posetivo pude tirar minha duvida.
Obrigado!
cara , show de bola a maneira que voce explica , sem comentarios rsrs
deveria ter o tudo progressivo , ai eu aprenderia tudo por aqui .
obrigado
Postar um comentário