JAVA - Como ler o label de um CD/DVD

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.
 
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.

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...
 
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!"
 
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!"

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).

getSystemDisplayName

public String getSystemDisplayName(File f)

Name of a file, directory, or folder as it would be displayed in a system file browser. Example from Windows: the "M:\" directory displays as "CD-ROM (M:)" The default implementation gets information from the ShellFolder class.

Parameters: f - a File object
Returns: the file name as it would be displayed by a native file chooser
Since: 1.4
See Also: JFileChooser.getName(java.io.File)

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:
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...
 
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...

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.
 
Back
Topo