Capturando a extensão de arquivos

4 respostas
J

Olá pessoal, estou com um probleminha ao tentar capturar a extensão de um arquivo.
a idéia é capturar a extensão, e se o formato for X o programa faz uma determinada tarefa, se for Y faz outra, e se não for suportado, exibe uma msg de erro.

Ao executar o arquivo, o netbeans me exibe este erro:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.io.FileInputStream.endsWith

Segue uma parte do código.

public static void main(String[] args) throws Throwable, IOException, Exception {

        FileInputStream file = new FileInputStream("c://arquivoTESTE.ppt");

        if (file.endsWith(".ppt") || file.endsWith(".PPT")) {
            JOptionPane.showMessageDialog(null, "O Arquivo é suportado, iniciando a tarefa X");

            SlideShow ppt = new SlideShow(file);
            file.close();

poderiam me ajudar?

4 Respostas

L

Bem deve ta compilando esse código. Faz assim:
file.getName().endsWith

J

lsjunior:
Bem deve ta compilando esse código. Faz assim:
file.getName().endsWith

Ja tentei usar do jeito que você mencionou, quando acrescento desta forma:

if (file.getName().endsWith(".ppt")) {

o ".getName (fica acusando erro), quando removo, o .endsWith acusa erro :frowning:

Alguma idéia de como resolver?

J

Alguem?

P

Olá, a classe FileInputStream tem a função de gerenciar os dados internos do arquivo(Buffer), tal classe não disponibiliza o nome do arquivo, a função dela é criar um Byte Buffer a partir de um arquivo.

A extensão do arquivo pode ser extraida de um
File
pois esta sim é uma classe com função de referenciar um arquivo "Existente".

Soluçao:

A classe FileInputStream aceita um File como atributo.

Portanto primeiro crie sua instância do File.
PS: "//" barras duplas apenas são necessárias quando usadas do outro lado "\\" pois '\' é um caractere especial.
PS2: Estou levando em consideração que você precisa mesmo do FileInputStream;

File file = new File("C:/arquivoTESTE.ppt");
FileInputStream fileInputStream = new FileInputStream(file);

if(file.getName().toLowerCase().endsWith(".ppt"))
    JOptionPane.showMessageDialog(null, "O Arquivo é suportado, iniciando a tarefa X");
Perceba que o getName().toLowerCase() faz com que o nome do arquivo seja minúsculo, sem necessitar duas comparações.

Método que retorna a extensão:

public static String getExtension(File file) {
		if (file instanceof File) {
			if (file.getName().length() > 1 && file.getName().contains(".")) {
				return file.getName().substring(file.getName().lastIndexOf("."));
			}
		}
		return null;
	}
Criado 8 de setembro de 2012
Ultima resposta 14 de set. de 2012
Respostas 4
Participantes 3