Ola pessoal, estou aqui para tirar uma duvida com vocês. Estou usando a API Java.io para criar diretórios e arquivos, só que estou na duvida se vai rodar no linux.
Usei algo mais ou menos assim para criar no windows:
File arquivo = new File("C:/Forum/Guj/Java/");
:?: Agora fiquei na duvida, por que pelo o que notei o linux usa barra invertida “”. Sendo o Java multiplataforma ele ira tratar isso para mim :?: ou seja esse mesmo programa que roda no windows vai rodar no linux :?:
OBS: Vou ter que colocar no lugar do “C”, “Sistemas de arquivos” para poder rodar no linux.
Não apenas a barra vai ter que mudar.
Em linux não existe também o disco C:, e alguns outros detalhes.
Uma sugestão é usar um caminho relativo e montar o endereço utilizando o separador de pastas padrão do sistema em que o software está rodando.
Para obter o separador, faça:
:oops: Desculpa minha ignorancia, mas naum entendi, para que serve esse código?
Eu queria saber se existe uma forma de não precisar mudar essas barras, por que são muitos os diretórios e arquivos que tenho que criar.
Se possivel, precisaria de um exemplo que esteja mais perto da minha realidade.
Se eu tiver que mudar todo o codigo, entaum, pode -se dizer que para este caso o Java não é multiplataforma, pois, vou ter que criar uma versão Windows e outra linux. :x
[quote=raphaelFree] :oops: Desculpa minha ignorancia, mas naum entendi, para que serve esse código?
Eu queria saber se existe uma forma de não precisar mudar essas barras, por que são muitos os diretórios e arquivos que tenho que criar.
Se possivel, precisaria de um exemplo que esteja mais perto da minha realidade.
Se eu tiver que mudar todo o codigo, entaum, pode -se dizer que para este caso o Java não é multiplataforma, pois, vou ter que criar uma versão Windows e outra linux. :x
[/quote]
Vc não precisará mudar as barras. Essa variável separator usa a barra do SO em que seu sistema estiver rodando. Se for no windows o valo de separator será “” e se for no linux ao contrário. Basta concatenar a string do cominho com a variável separator. Ex.:
A idéia era utilizar o separador de pastas padrão do sistema operacional em que o aplicativo está rodando. À partir daí, pode ser montado o caminho no qual os arquivos serão gravados.
Ao invés de criar um caminho fixo (no exemplo “C:/Forum/Guj/Java/”), você criaria um caminho que seria montado utilizando o separador. Por exemplo.
Entendi. No entanto, existe outro problema, e quanto ao nome do Volume ? windows “C” e linux “sistemas de arquivos”, de qualquer forma vou ter que criar uma versão para cada SO.
Pensei em renomear o “sistemas de arquivos” do linux para “C”, mas é inviável, por imagina a cada instalação do produto ter que ficar renomeado a unidade de disco. Sei lá, será que naum existe uma forma, ou metódo de buscar o nome do volume ?
[quote=raphaelFree]Vlw,muito obrigado. Viva o Java
Entendi. No entanto, existe outro problema, e quanto ao nome do Volume ? windows “C” e linux “sistemas de arquivos”, de qualquer forma vou ter que criar uma versão para cada SO.
Pensei em renomear o “sistemas de arquivos” do linux para “C”, mas é inviável, por imagina a cada instalação do produto ter que ficar renomeado a unidade de disco. Sei lá, será que naum existe uma forma, ou metódo de buscar o nome do volume ?
OBS: :shock: to ficando loko…hehehehe[/quote]
O método “listRoots()” da classe “File” retorna os “arquivos” que representariam os níveis hierárquicos mais altos do sistema de arquivos da plataforma onde a JVM está rodando.
A partir daí o resto é com você mesmo.
No Linux não existe drive C, D etc. Existe apenas um sistema de arquivos ("/") e onde os programas devem ser instalados depende do seu tipo de Linux.
No caso do Mac OS X, o esquema é bem parecido com o do Linux (o separador de nomes de arquivos também é “/”); onde os programas devem ser instalados é num outro lugar bem padronizado, mas não é no mesmo lugar do Linux.
Ambos não têm o conceito de “drives” (C:, D: etc.). Isso é um vestígio do CP/M, onde o drive A: era o primeiro floppy e o B: o segundo floppy, e os poucos felizardos que tinham HD podiam usar o drive C: . Como o HD era muito caro, era muito raro ver drive D: ou coisas parecidas.
Então, estou googleando, achei algo como montar um outro disco no linux com nome por exemplo de “C”.
E ai pessoal o que vocês acham?
Sei lá criar uns scripsts, e executa - los na hora da instalação, assim desta forma eu teria: “Sistemas de arquivos” e “C”.
Não sei se estou pensando certo.
Por que se esta forma estiver certo, entao, nao preciso mudar o codigo java, deixando versões iguais para os 2 SO.