Espaço em Disco Linux?

Olá pessoal, tudo bem?

Estou com uma duvida em como descobrir o espaço em disco em linux.
Tenho um metodo que me retorna o espaço, mas em windows:

[code] public String CalculaEspaco(String unidade) {
//VERIFICA ESPACO EM DISCO
File c = new File(unidade);

long espacolivre = c.getFreeSpace();
espacolivre=(int)(espacolivre/(1024*1024));
DecimalFormat aproximador = new DecimalFormat( "0.00" );
return aproximador.format(espacolivre);

}[/code]
Agora gostaria de pegar o espaço em disco para linux. Alguém poderia ajudar?
Desde já agradeço…

O código é quase o mesmo, só que em vez de você passar “C:”) , você tem de passar um diretório - é que o espaço livre do Linux depende do diretório que você está passando. Por exemplo, se você passar “/home” , você pode ter um resultado diferente de se você passar “/usr”.

Na maior parte dos usos, eu passaria o diretório do usuário (System.getenv (“user.home”) , que é onde você põe seus dados.

Opa cara,

Nunca fiz isso, mas deixa eu te perguntar: Não é a mesma coisa que chamar uma aplicação externa e como aplicação colocar:

df -h /unidade

Acho que dá a mesma coisa. Tenta ai.

Esquece o que postei, foi viagem feia.

Ê sono que tô.

[quote=thingol]O código é quase o mesmo, só que em vez de você passar “C:”) , você tem de passar um diretório - é que o espaço livre do Linux depende do diretório que você está passando. Por exemplo, se você passar “/home” , você pode ter um resultado diferente de se você passar “/usr”.

Na maior parte dos usos, eu passaria o diretório do usuário (System.getenv (“user.home”) , que é onde você põe seus dados. [/quote]

Amigo, como ficaria a chamada para System.getenv(“user.home”)???

    File c = new File(System.getenv ("user.home")); 
    long espacolivre = c.getFreeSpace();

Tira o home.user da aspa. Aspas transformam pra String ai.

http://www.google.com.br/search?hl=pt-BR&q=user+home+java&btnG=Pesquisa+Google&meta=

A diferença do linux pro windows é que o Windows o nome é que nao é C: ou D:…é hd0 ou hd1…caso voce tenha dois hds ficaria…

hda0 hda1, hdb0 hdb1…ou se voce tem uma partição só da até para fazer direto… filesystem, tente destas formas talvez resolva. espero ter ajudado com alguma coisa.
:smiley:

Tentei usar o codigo das duas formas mas deu erro: Java.Lang.NullPointerException

public class EspacoDisco { public String CalculaEspaco(String unidade) { //VERIFICA ESPACO EM DISCO File c = new File(System.getenv("user.home")); long espacolivre = c.getFreeSpace(); espacolivre=(int)(espacolivre/(1024*1024)); DecimalFormat aproximador = new DecimalFormat( "0.00" ); return aproximador.format(espacolivre); } }

Na segunda Maneira usei File c = new File("/var");

Mas também não deu certo…

Se eu usar File c = new File(“hda0”); daria certo???

[code]import java.io.File;

public class Teste {
public static void main(String args[]) {
File c = new File(System.getProperty(“user.home”));
System.out.println(c.getFreeSpace());
}
}[/code]

System Properties

"user.dir" User's current working directory "user.home" User home directory

Se não me engano o System.getenv() é utilizado para pegar o valor da variavel de ambiente.

no caso se ficar especifica a saida da partição isto mataria totalmente a portabilidade do sistema…

Luiz LG eu sei que o tópico não foi aberto por mim, mais pelo que eu entendi este seu código puxa direto da pasta do usuário independente do nome da partição e do sistema?