ffar
Fevereiro 7, 2008, 8:56am
#1
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.
thingol
Fevereiro 7, 2008, 9:58am
#2
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.
ffar
Fevereiro 7, 2008, 10:02am
#3
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.
thingol
Fevereiro 7, 2008, 10:05am
#4
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:
") ) );
}
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]