Escribir un array en un archivo txt

aleperezb
07 de Diciembre del 2005
Necesito escribir un array en un archivo txt, hasta ahora logro sacarlo por pantalla asi es que se que lo hace bien, pero necesito sacarlo en un archivo de texto. El metodo que tengo dentro de mi calse main es el siguiente:

public static void LlenarCerrado(int s, float[] arrayX, float[] arrayZ,
int[] ik) {
ik = new int[s];
for (int index = 0; index <= ik.length; index++) {
if ( (arrayX[index] >= arrayZ[0]) & (arrayX[index] < arrayZ[1])) {
ik[index] = 1;
}
else if ( (arrayX[index] >= arrayZ[1]) & (arrayX[index] <= arrayZ[2])) {
ik[index] = 2;
}
else {
ik[index] = 3;
}
System.out.println("ik[" + index + "] = " + ik[index]);
try {
FileWriter fw = new FileWriter("Fichero Ik.txt");
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter salida = new PrintWriter(bw);
for (int index1 = 0; index1 <= ik.length; index1++) {
salida.println("ik[" + index1 + "] = " + ik[index1]);
}
salida.close();
}
catch (java.io.IOException ioex) {}
}

}

Pero solo me escribe el ik[7], que puede estar pasando?...Gracias!!!

King
07 de Diciembre del 2005
Hola:

Parece que estas escribiendo varias veces en el mismo archivo, pero cada vez que escribes algo nuevo se borra lo anterior, como creando un nuevo archivo con el mismo nombre, por eso solo te deja el ultimo valor (el que se escribió al final).

Trata de crear el FileWriter con la opción de que te pegue las cosas al final del archivo, en lugar de que lo sobreescriba, mira el siquiente fragmento del API de Java:

FileWriter(String fileName, boolean append)
Constructs a FileWriter object given a file name with a boolean indicating whether or not to append the data written.

en lugar de FileWriter fw = new FileWriter("Fichero Ik.txt");
ponle:
FileWriter fw = new FileWriter("Fichero Ik.txt", true);

Espero que te sirva.... visitame en mi página! tenemos muchas cosaS:
www.novacreations.net

Saludos

King

aleperezb
07 de Diciembre del 2005
Gracias!!!

aleperezb
07 de Diciembre del 2005
Hola King!, es que soy nueva en esto!!!. Porfa! Help my!
necesito leer un archivo *.txt que tiene el siguiente formato:
4.556
8.667
99.000
5.678
346.9008
Y necesito guardalor en un array, se que leerlos por pantalla me resulta bien:
// para llenar el vector de la varaible Xk
BufferedReader inData = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Ingrese numero de elementos de Xk= ");
int s = Double.parseDou(inData.readLine());
arrayX = new float[s];
for (int index = 0; index < arrayX.length; index++) {
System.out.println("Ingresar valor Xk[" + index + "] = ");
arrayX[index] = Double.parseDou(inData.readLine());
}
for (int index = 0; index < arrayX.length; index++) {
System.out.println("Xk[" + index + "] = " + arrayX[index]);
}

pero si no quiero ingresarlo por teclado (porque a veces tendre muchos datos) y leerlos de un archivo txt..¿que hago?
Gracias!


Diego
07 de Diciembre del 2005
Utiliza la clase java.util.Scanner pasándole el archivo que quieras leer como parámetro y
un java.util.LinkedList para almacenar los resultados intermedios.

import java.util.*;
import java.io.*;
public static double[] leeArchivo(String nombreARchivo)
{
Scanner lector=new Scanner(new File(nombreArchivo));
LinkedList<Double> lista=new LinkedList<Double>();
while(lector.hasNextDouble())
lisa.add(lector.nextDouble());
double [] array=new double[lista.size()];
return lista.toArray(array);
}

Nota: para leer u array de otro tipo sólo has de cambiar donde pone double y Double por el tipo que desees leer.