1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

JAVA - Como ler o label de um CD/DVD

Discussão em 'Programação' iniciada por ffar, 6 de Fevereiro de 2008. (Respostas: 6; Visualizações: 930)

  1. ffar

    ffar Power Member

    Boas,

    Tou a fazer uma pequena aplicação JAVA e preciso que esta leia o label de um CD/DVD que esteja na drive.

    Consigo aceder aos ficheiros, directorias, espaço livre, etc. menos ao nome do CD/DVD. Alguém sabe como posso aceder a esta propriedade?

    Thanks.
     
  2. doginthefog

    doginthefog Power Member

    Tenta isto:

    Código:
    import java.io.*;
    import javax.swing.filechooser.*;
     
    class MostraLabel
    {
     
     public static void main(String args[])
     {
      FileSystemView fsv = FileSystemView.getFileSystemView();
      System.out.println(fsv.getSystemDisplayName(new File("D:\\")).trim());
     }
     
    }
     
    

    P.S.: poderias ter encontrado essa informação facilmente no Google...
     
  3. bmpv666

    bmpv666 Power Member

    mas se a drive for a F: ou E: puff...
    se esse código for correr num *nix por exemplo, puff...esse só dá em windows mesmo, o que derrota totalmente a ideia de portabilidade do Java!

    qualquer BOM programador de Java terá sempre presente na sua mente a máxima: "Write once, run everywhere!"
     
  4. doginthefog

    doginthefog Power Member

    Se a drive for a E, ou a F, isso é questão do man escrever o seu próprio código (eu não vou adivinhar o que ele quer!). Não é difícil fazer um ciclo a ver se a label que ele quer está na letra r: ou s:.. puff :)

    Se deres umas olhadelas pelos Javadoc oficiais podes observar que a intenção é de ler para todos os SOs. Por isso, para já, o código é multi-plataforma (obviamente quererias depois experimentar um /mnt/cdrom, ou mesmo ver as variáveis de ambiente para saberes em que SO estás a trabalhar).

    A questão aqui é que isso não foi implementado (para Linux) na máquina virtual do Java pelo simples motivo de até as próprias bibliotecas do Linux/Unix não terem esse conceito introduzido (desconheço que isso assim o seja). A única maneira de se fazer isto de forma elegante em Java seria ler directamente do dispositivo "em bruto", provavelmente isso se poderia obter a ler os cabeçalhos.. Mas isso é do caneco..

    SE o ffar precisar de ler isso em Linux OU SE quiser fazer uma coisa que funcione para vários SO a única solução na minha óptica passa por ler as variáveis do ambiente e ver qual é o SO. Se é o Windows, o código é o normal do Java. Se for Linux, poderá fazer-se que o Java chame um programa externo (volname?!?), embora isso na minha opinião fique um pouco foleiro. O programa também pode tentar obter o label do cd-rom e, caso não consiga porque é linux, poderá chamar um timer que espere um ano e que apresente a mensagem "A aguardar até que isso tenha sido implementado..." :)

    bmpv666 e na próxima vez que acusares alguém, primeiro informa-te sobre as coisas.. olha e já agora, apresenta uma solução :) tens aí uma oportunidade de mostrares ser um "BOM" programador Java, lolada.... puuuuuuuuuuuuffffffff
     
    Última edição: 11 de Fevereiro de 2008
  5. bmpv666

    bmpv666 Power Member

    não acusei ning, apresentei apenas as falhas óbvias do código que propuseste.
    qto ao pesquisar, confenso que me falta paciência para procurar por coisas que pouco me interessam...
     
  6. doginthefog

    doginthefog Power Member

    Pois, mas afinal não há falha nenhuma, quanto mais "falha óbvia"..

    E se te falta paciência então não tinhas que mandar bitaites nenhuns, já que não percebes da matéria nem fazes para percebe-la.
     
  7. ffar

    ffar Power Member

    Obrigado. Resolvi o meu problema com o código do doginthefog :)
     

Partilhar esta Página