Gente… meu problema se estende numa coisa…
Tenhu este arquivo:
Mdps.dat
animal backbone
animal leg bone
Bark
black animal tail fur
bronze
cinnamon wood
cooper
crystal stone
hp water
insect feeler
insect leg
insect wing
Iron thread
limbid skin
maple wood
misian
plant seed
Pollen
( parei a lista aqui no pollen pois o arquivo tem 452 linhas :lol: )
pois bém… o que é meu problema:
preciso pegar cada linha e colocar numa posição num vetor:
private String[] Mdps;
O que no caso ficaria mais ou menos assim depois de pronto…
Mdps = {"animal backbone", "animal leg bone", "Bark", "black animal tail fur", "bronze"};
e assim vai… (como eu disse são 452 linhas ao todo.)
felizmente me ocorreu um erro na minha tentativa… pela lógica deveria dar certo. porque não deu!?
File db = new File("c:\RB Evo DropList\Data\Mdps.dat");
if(db.exists()){
try{
FileReader arquivoMdps = new FileReader(db);
BufferedReader buffRead = new BufferedReader(arquivoMdps);
while ((temp = buffRead.readLine()) != null) {
for(int i=0; i<buffRead.readLine().length(); i++){
Mdrops5[i] = temp;
}
}
F.setMyString(Mdrops5);
}catch(IOException e){
}
}
}
a parte em que eu leio cada linha e passo pro vetor em cada posição o nome de cada linha, deveria estar certo.
O compile deu erro aqui:
Você não pode fazer dessa maneira. O correto é algo como:
private String[] Mdps;
File db = new File("c:\RB Evo DropList\Data\Mdps.dat");
if(db.exists()){
try{
FileReader arquivoMdps = new FileReader(db);
BufferedReader buffRead = new BufferedReader(arquivoMdps);
List<String> linhas = new ArrayList<String>();
String linha; // não use nomes como "temp"...
while ((linha = buffRead.readLine()) != null) {
linhas.add (linha);
}
buffRead.close();
Mdps = (String[]) linhas.toArray();
F.setMyString(Mdps);
}catch(IOException e){
e.printStackTrace(); // pelo menos para saber que houve erro, não?
}
}
}
É msm thingol, depois de analisar o codigo dele a primeira coisa que veio na cabeça foi a falta do new.
Do jeito que vc colocou é melhor pois servirá para qq tamanho(qtd de linhas) de .txt
:roll:
tu deve ter estudado muito. eu ainda sou iniciante pelo conhecimento que tenhu em java. mas vamos lá. como diz o ditado… uma mão lava a outra.
init:
deps-jar:
Compiling 1 source file to C:\projeto alpha\RB Evo DropList\build\classes
compile:
run:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at rbevodroplist.Main.main(Main.java:42)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
compile novamente relatou o erro… e adivinha so!? na mesma linha… aonde o Mpds recebe.
Mdps = (String[]) linhas.toArray();
com o codigo certin, vou dar uma estudada aprofundada nisso.
e agora!? que erro é este!?
Tem 18h que ando lendo a respeito sobre arquivos, List e arrayList… mas to quebrando a cbeça nisso… tentei solucionar sozinho, inventei codigo, mas no final acabei que estou recorrendo a comunidade novamente.
F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
F.setVisible(true);
F.setResizable(false);
F.setSize(300, 400);
}
}[/code]
Este é o meu primeiro arquivo… O segundo não vou postar pois é meio grande, mas dá pra interpretar o meu problema falando daqui em diante.
a leitura deste arquivo que abro, está caindo no segundo arquivo. Nele estou salvando numa JComboBox.
tudo bem… primeira pergunta:
Apos fazer isso:
public void setMyString(String[] aeee){
Mdrops = aeee;
mateDrops.setModel(new DefaultComboBoxModel(Mdrops));// <---- apos fazer isto aqui....
}
há como fazer edição!? digo… poder adicionar uma opção para edição. poder adicionar itens ao JComboBox. Isto é… ele recebeu a lista de nomes, mas gostaria de poder fazer adições.
De acordo com a pergunta acima… como eu poderia fazer para salvar no meu arquivo Mdps.dat a modificação feita no JComboBox!? :
animal backbone
animal leg bone
Bark
black animal tail fur
bronze
cinnamon wood
cooper
crystal stone
hp water
insect feeler
insect leg
insect wing
Iron thread
limbid skin
etc....
Agora o pior de todos os problemas…
3. Criando uma nova .class para o pacote (visto no meu primeiro arquivo la encima “package rbevodroplist;”), quero poder fazer o salvamento da modificação por esta .class*
OBS.: no caso, este arquivo estaria sempre com os dados dos arquivos abertos na memoria para qualquer modificação. (eu disse arquivo é porque apos saber como gravar os dados dessa maneira irei aplicar a mais 15 arquivos paralelos e aleatorios…)
Se alguem puder me ajudar com a minha dor de cabeça… hehehe, Agradeceria muito.