JAVA - Como ler o label de um CD/DVD

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.

Experimente executar o seguinte comando em um "Command Prompt", ou DOS (não sei como é o nome disso no Windows em português ibérico):

cmd /c vol d: > \ficheiro.txt

(onde d: é a letra do drive que contém o CD ou DVD).

No meu Windows em inglês o conteúdo do arquivo "\ficheiro.txt" é algo como

Volume in drive D is URIAH_HEEP
Volume Serial Number is CAFE-BABE

O que você deve fazer, então, é usar Runtime.exec para executar o comando acima, e ler o ficheiro criado pelo comando.

Obrigado pela resposta. É uma opção.

No entanto assim o programa não fica independente da plataforma (só vai funcionar em Windows/DOS). Ia ter de contornar o problema no codigo. Vou ponderar isto.

Como é que se lê o label de um CD ou DVD no Linux? Acho que é bem mais complicado. (Não dá para ler com “ls -l” ou outro comando padrão do Unix).

Usa a classe FileSystemView do pacote javax.swing

[code]import java.io.File;

import javax.swing.filechooser.FileSystemView;

public class FSTest {
public static void main(String[] args) {
FileSystemView fsv = FileSystemView.getFileSystemView();

    File[] roots = File.listRoots();
    for (int i = 0; i < roots.length; i++) {
        System.out.println("fsv.getSystemDisplayName: "
                + fsv.getSystemDisplayName(roots[i]));
        System.out.println("fsv.getSystemTypeDescription: "
                + fsv.getSystemTypeDescription(roots[i]));
        System.out.println("fsv.isDrive: " + fsv.isDrive(roots[i]));
        System.out.println("=======================================");
    }
}

}
[/code]

Se vc tentar um pouco de plataform specific code dá pra escrever um:

System.out.println(fsv.getSystemDisplayName( new File("e: ") ) ); System.out.println(fsv.getSystemDisplayName( new File("f: ") ) ); }

Era isso mesmo.

Obrigado

Resuscitando o post, hehehe

E se eu quizer mostrar na tela o conteudo das unidades, por exemplo listar as pastas ou arquivos do CD que tem no drive.

Alguém saberia como?

Consegui assim:

[code]import java.io.File;
import java.util.Vector;

public class Main {

public static void main(String[] args)
{
	Vector vetor = new Vector();

    File dir = new File("G:\\");

	File[] arqs = dir.listFiles();

	for (int i=0; i< arqs.length; i++){
	  System.out.println(arqs[i]);
      vetor.add(arqs[i]);
    }
    //mostra o vetor completo
    System.out.println(vetor);
    //quebra o vetor em posicao e depois separa a unidade da faixa
    for (int i=0; i < vetor.size(); i++){
      String temp = vetor.get(i).toString();
      String faixa = temp.substring(3, 50);
      String unidade = temp.substring(0, 3);
      System.out.println("Unidade: " + unidade + " -> Faixa: " + faixa);
    }
}

}[/code]