Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > usar variable en método y clase diferente

Dadas las siguientes dos clases:

public class mapeoCFDv2 extends AbstractSingleNodeMapeo{
...
// método
private ComprobanteBean getUdmComprobante(Document cfdv2, File file){
...
File txtFile = new File("/CFDConnect/tmp/"+nombre+".txt"); <-- esta variable quiero usar
...
return comprobante;
}
}


public class extraeComentario {
...
// método
public static StringBuilder capturarTextoDeArchivo() {
File archivo = null; <-- aquí la quiero usar
...}
}

se desea usar el archivo TXT al que apunta la variable File txtFile = new File("/CFDConnect/tmp/"+nombre+".txt"), en la variable File archivo = null de la clase extraeComentario
E intentado creando un objeto de la clase, por parámetros, y en cada caso me genera error... ¿Cómo puedo solucionarlo?

julio 19, 2012 | Registered Commentereddsac

Debes hacer uso de los metodos Setter y Getter...

En tu caso...el Getter

public class A {

private String variable;
....
public String getVariable() {
return variable;
}
}

public class B {

private String variable;..................................Aqui la guardaremos
private A objetoA;.........................................Instanciamos un objeto de la clase A

public B() {....................................................Metodo constructor
objetoA = new A();..................................Creamos el objeto de la clase A
this.variable = objetoA.getVariable();......Traemos la variable desde la clase A
}
}

julio 22, 2012 | Registered Commenterju4n

Gracias @ju4n, funciona correctamente tu solución...

Ahora,
¿cómo asigno la variable "txtFile" del método getUdmComprobante a la variable "archivoTXT" del método getVariable?
Nota: Los 2 métodos pertenecen a la misma clase

public class mapeoCFDv2 extends AbstractSingleNodeMapeo{

public String getVariable() {
return archivoTXT;
}

private ComprobanteBean getUdmComprobante(Document cfdv2, File file){
...
File txtFile = new File("/CFDConnect/tmp/"+nombre+".txt");
...
return comprobante;
}

}

Saludos cordiales...

julio 23, 2012 | Registered Commentereddsac

Tu variable archivoTXT es de tipo String, mientras que txtFile es de tipo File.
De entrada, deberías hacer de txtFile un campo de la clase:

private File txtFile;

private ComprobanteBean getUdmComprobante(Document cfdv2, File file){
...
txtFile = new File("/CFDConnect/tmp/"+nombre+".txt");
...
return comprobante;
}

Así su valor estará disponible para otros métodos. Otra cuestión es qué quieres que contenga la variable archivoTXT.

julio 23, 2012 | Registered Commenterchoces

Deseo que la variable archivoTXT contenga el archivo TXT de la variable txtFile.

Gracias @choces & @ju4n 4 U time

julio 23, 2012 | Registered Commentereddsac

En ese caso, debes leer el contenido del archivo txtFile para pasarlo a una variable de tipo String.

Un modo simple de conseguirlo:

BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append("\n");
line = br.readLine();
}
String everything = sb.toString();
} finally {
br.close();
}

En esa variable everything estará el contenido del archivo de texto.

julio 23, 2012 | Registered Commenterchoces

Entiendo lo que dices; sin embargo, el archivo TXT que deseo leer no siempre es el mismo, es decir, cambia constantemente el nombre del archivo...

julio 23, 2012 | Registered Commentereddsac

private String getTexto(final String nombreArchivo) throws FileNotFoundException, IOException {
String texto;
final BufferedReader br = new BufferedReader(new FileReader(nombreArchivo));
try {
final StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append("\n");
line = br.readLine();
}
texto = sb.toString();
} finally {
br.close();
}
return texto;
}

julio 23, 2012 | Registered Commenterchoces

gracias @choses

julio 23, 2012 | Registered Commentereddsac