Ficheros, intento copiar el contenido de un archivo a otro

Iniciado por marixxaa, 19 Enero 2016, 02:47 AM

0 Miembros y 1 Visitante están viendo este tema.

marixxaa

Hola soy nueva!, disculpen si no me se explicar bien, pero estoy intentando copiar el contenido de un archivo de texto a otro nuevo, dicho contenido es el siguiente:

a,b,c
d,e,f

sCadena contiene cada linea del archivo txt que deseo copiar.
y luego a sCadena lo quiero separar en tokens en un array, el problema es que el siguiente codigo
devuelve:
a,b,c
,d,e,f
,

cuando lo que yo deseo es que lo copie tal cual como estaba
a,b,c
d,e,f

Gracias, y espero respuestas (aunque no se si me explique bien).



while ((sCadena = bf.readLine())!=null) {
String []tokens=sCadena.split(",");
for (int x=0; x<tokens.length; x++) {

if(x<2)
salidaCopia.format(tokens[x]+",");
if(x==2){
salidaCopia.format("tokens[x]+"\n\r\n");
}



0xFer

#1
Hola, ¿puedes publicar el código del método format?  :-\ o publica todo si no es mucho.

CitarHola soy nueva!

Bienvenida!  ;D
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

marixxaa

Cita de: 0xFer en 19 Enero 2016, 03:35 AM
Hola, ¿puedes publicar el código del método format?  :-\ o publica todo si no es mucho.

Bienvenida!  ;D
Gracias. No se si esto te sirve

BufferedReader bf = null;
BufferedReader bf1 = null;
BufferedReader bf3 = null;
try {
bf = new BufferedReader(new FileReader("Altas.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
salidaCopia= new Formatter("Altas2.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

0xFer

Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

marixxaa

#4
Cita de: 0xFer en 19 Enero 2016, 03:55 AM
No, mejor publica todo  :-(

ok pero es un desastre esto, a penas estoy empezando a programar en java

package Programa;
import java.awt.Component;
import java.awt.FlowLayout; // especifica cómo se van a ordenar los componentes
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Formatter;
import java.util.Scanner;
import java.util.StringTokenizer;
import javax.swing.JFrame; // proporciona las características básicas de una ventana
import javax.swing.JLabel; // muestra texto e imágenes
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
public class Marco extends JFrame
{
private GridBagLayout esquema;
private GridBagConstraints restricciones;
private JButton ingresar;
private JButton modificar;
private JTextField nombre;
private JTextField apellido;
private JTextField dni;
private JLabel nombreLabel;
private JLabel apellidoLabel;
private JLabel dniLabel;
private JLabel vacio;
private String nombreVar;
private String apellidoVar;
private String dniVar;
private Formatter salida;
private Formatter salidaCopia;
JLabel jUserName = new JLabel("Usuario");
JTextField userName = new JTextField();
JLabel jPassword = new JLabel("Password");
JTextField password = new JPasswordField();
Object[] ob = {jUserName, userName, jPassword, password};
public Marco ()
{
esquema=new GridBagLayout();
setLayout(esquema);
restricciones=new GridBagConstraints();
JMenu archivo=new JMenu ("Archivo");
JMenu altas=new JMenu ("Altas");
JMenuItem crearNuevoArchivo= new JMenuItem ("Crear nuevo archivo");
JMenuItem salir= new JMenuItem ("Salir");
JMenuItem altaEmpleado= new JMenuItem ("Empleado");
nombre = new JTextField("",10);
apellido = new JTextField("",10);
dni = new JTextField("",10);
nombreLabel = new JLabel("Nombre");
apellidoLabel = new JLabel("Apellido");
dniLabel = new JLabel("Dni");
ingresar= new JButton("INGRESAR");
modificar= new JButton("MODIFICAR");
vacio=new JLabel(" ");
nombre.setVisible(false);
modificar.setVisible(false);
apellido.setVisible(false);
dni.setVisible(false);
nombreLabel.setVisible(false);
apellidoLabel.setVisible(false);
dniLabel.setVisible(false);
ingresar.setVisible(false);
archivo.add(crearNuevoArchivo);
archivo.add(salir);
altas.add(altaEmpleado);
JMenuBar barra=new JMenuBar();
setJMenuBar(barra);
barra.add(archivo);
Oyente oyente =new Oyente();
barra.add(altas);
altaEmpleado.addActionListener(
new ActionListener()
{
public void actionPerformed (ActionEvent evento){
nombre.setVisible(true);
apellido.setVisible(true);
dni.setVisible(true);
nombreLabel.setVisible(true);
apellidoLabel.setVisible(true);
dniLabel.setVisible(true);
ingresar.setVisible(true);
modificar.setVisible(true);
}
}
);
modificar.addActionListener(
new ActionListener()
{
public void actionPerformed (ActionEvent evento){
String sCadena;
String linea;
String Cadena;
String Cadena1;
String Cadena2;
String sCadena3;
BufferedReader bf = null;
BufferedReader bf1 = null;
BufferedReader bf3 = null;
try {
bf = new BufferedReader(new FileReader("Altas.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
salidaCopia= new Formatter("Altas2.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
while ((sCadena = bf.readLine())!=null) {
//System.out.print(sCadena);
String []tokens=sCadena.split(",");
for (int x=0; x<tokens.length; x++) {
if (x>=3)
x=10;
// System.out.println(tokens[x]);
System.out.println(tokens.length);
if(tokens[x].equals("a"))
tokens[x]="*";
// System.out.println("maria se encontro");
// Cadena=tokens[x];
if(x<2)
salidaCopia.format(tokens[x]+",");
if(x==2){
salidaCopia.format(tokens[x]+"\n\r\n");
}
//x=0,1,2
// a,b,c
}
// salidaCopia.format("\n\r\n");
//System.out.print(tokens[1]);
//System.out.print(tokens[1]);
//System.out.print(tokens[2]);
//salidaCopia.close();
// salidaCopia.format(tokens[0]+","+tokens[1]+","+tokens[2]);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// ... cleanup that will execute whether or not an error occurred ...
}

salidaCopia.close();

//x=0,1,2
// a,b,c

try {
salida= new Formatter("Altas.txt");
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
bf3 = new BufferedReader(new FileReader("Altas2.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
while ((sCadena3 = bf3.readLine())!=null) {
//System.out.print(sCadena);
String []tokens=sCadena3.split(",");
for (int x=0; x<tokens.length; x++) {
System.out.printf("dd%d",x);
if(x==3)
x=10;
if(x<2)
salida.format(tokens[x]+",");
if(x==2){
//salida.format(tokens[x]+"\n\r\n");
salida.format(tokens[x]+"\n\r\n");
}
//x=0,1,2
// a,b,c
}
// salidaCopia.format("\n\r\n");
//System.out.print(tokens[1]);
//System.out.print(tokens[1]);
//System.out.print(tokens[2]);
//salidaCopia.close();
// salidaCopia.format(tokens[0]+","+tokens[1]+","+tokens[2]);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// ... cleanup that will execute whether or not an error occurred ...
}
salida.close();
}
// salidaCopia.format("\n\r\n");
//System.out.print(tokens[1]);
//System.out.print(tokens[1]);
//System.out.print(tokens[2]);
//salidaCopia.close();
// salidaCopia.format(tokens[0]+","+tokens[1]+","+tokens[2]);


}
);
ingresar.addActionListener(oyente);
crearNuevoArchivo.addActionListener(
new ActionListener()
{
String userNameValue;
String passwordValue;
public void actionPerformed (ActionEvent evento){
int result = JOptionPane.showConfirmDialog(null, ob, "Se requiere autorizacion de ADMIN", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
userNameValue = userName.getText();
passwordValue = password.getText();
//Here is some validation code
}
if(!passwordValue.equals("abc")&&(!userNameValue.equals("admin"))){
JOptionPane.showMessageDialog(null, "Acceso: DENEGADO");
}
if (passwordValue.equals("abc")&&(userNameValue.equals("admin"))){
JOptionPane.showMessageDialog(null, "Acceso: CONFIRMADO");
try {
salida= new Formatter("Altas.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
salidaCopia= new Formatter("Altas2.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
);
restricciones.fill=GridBagConstraints.VERTICAL;
agregarComponente(nombre,0,0,1,1);
agregarComponente(apellido,1,0,1,1);
agregarComponente(dni,2,0,1,1);
agregarComponente(nombreLabel,0,1,1,1);
agregarComponente(apellidoLabel,1,1,1,1);
agregarComponente(dniLabel,2,1,1,1);
agregarComponente(vacio,0,2,1,1);
agregarComponente(ingresar,0,3,1,1);
agregarComponente(modificar,1,3,1,1);
}
private void agregarComponente(Component componente, int fila, int columna, int anchura,int altura)
{
restricciones.gridx=columna;
restricciones.gridy=fila;
restricciones.gridwidth=anchura;
restricciones.gridheight=altura;
esquema.setConstraints(componente,restricciones );
add(componente);
}
public class Oyente implements ActionListener
{
public void actionPerformed (ActionEvent evento)
{
String sCadena;
String linea;
String Cadena;
BufferedReader bf = null;
/*
try {
bf = new BufferedReader(new FileReader("Altas.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
salidaCopia= new Formatter("Altas2.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
FileWriter fichero = null;
PrintWriter pw = null;

try
{
fichero = new FileWriter("Altas.txt",true);
pw = new PrintWriter(fichero);
int i = 0;
nombreVar=nombre.getText();
apellidoVar=apellido.getText();
dniVar=dni.getText();
if(!nombreVar.equals("0"))
pw.print(nombreVar+","+apellidoVar+","+dniVar+"\n\r\n");
fichero.close();
//pw.println("Linea " + i);
} catch (Exception e) {
e.printStackTrace();
} finally {
// Nuevamente aprovechamos el finally para
// asegurarnos que se cierra el fichero.
if (null != fichero)
//fichero.close();
try {
} catch (Exception e2) {
e2.printStackTrace();
}
}
/*
nombreVar=nombre.getText();
apellidoVar=apellido.getText();
dniVar=dni.getText();
if(!nombreVar.equals("0"))
salida.format(nombreVar+","+apellidoVar+","+dniVar+"\n\r\n");
salidaCopia.format(nombreVar+","+apellidoVar+","+dniVar+"\n\r\n");
*/
//salida.format(nombreVar+"\n");
if(nombreVar.equals("0")){
//System.out.print("0");
//salida.close();
}
/*
try {
while ((sCadena = bf.readLine())!=null) {
linea=sCadena;
System.out.println(sCadena);
String[]tokens=sCadena.split(",");
//System.out.println(sCadena);
System.out.println(tokens[0]);
System.out.println(tokens[1]);
System.out.println(tokens[2]);
if(tokens[1].equals("Ordones")){
tokens[1]="Ordename";
System.out.print("seee");
}
salidaCopia.format(tokens[0]+","+tokens[1]+","+tokens[2]+"\n\r\n");
}
salidaCopia.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
}
/*
JFrame winMain = new JFrame("Mostrar / Ocultar Jpanel");
winMain.setVisible(true);
winMain.setSize( 400, 400 );
winMain.setDefaultCloseOp eration(JFrame.EXIT_ON_CLOSE);
*/
//System.out.print(nombreVar);
/**************ESTO SIRVE PARA COPIAR TODO UN ARCHIVO A OTRO**********************
StringTokenizer defaultTokenizer = new StringTokenizer(linea);
while (defaultTokenizer.hasMoreTokens())
{
defaultTokenizer.nextElement();
salidaCopia.format(defaultTokenizer.nextToken()+"\n\r");
salidaCopia.format("\n\r");
}
*/

0xFer

Tu código es muy difícil de leer, te recomiendo utilizar la indentación porque la verdad yo no entendí nada. Te dejo una solución al problema que planteas:

Código (java) [Seleccionar]
try{
            /*Archivo a leer*/
            String cadena;
            File fileLectura = new File("Altas.txt");
            FileReader f = new FileReader(fileLectura);
            BufferedReader bf = new BufferedReader(f);
           
            /*Archivo a escribir*/
            FileWriter fileEscritura = new FileWriter("Altas2.txt");
            PrintWriter pw = new PrintWriter(fileEscritura);
         
            /*Leer y escribir*/
            while((cadena = bf.readLine())!=null){
                String CadenaSal = "";
                String[] letras = cadena.split(",");
               
                for( int i = 0; i < letras.length;i++){
                   
                    if( i != (letras.length - 1) )
                        CadenaSal += letras[i] + ",";
                    else
                        CadenaSal += letras[i];
                }
                pw.println(CadenaSal);
            }
            bf.close();
            pw.close();
        }
        catch(IOException IOErr){
            IOErr.printStackTrace();
        }


Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

marixxaa

Cita de: 0xFer en 19 Enero 2016, 04:43 AM
Tu código es muy difícil de leer, te recomiendo utilizar la indentación porque la verdad yo no entendí nada. Te dejo una solución al problema que planteas:

Código (java) [Seleccionar]
try{
            /*Archivo a leer*/
            String cadena;
            File fileLectura = new File("Altas.txt");
            FileReader f = new FileReader(fileLectura);
            BufferedReader bf = new BufferedReader(f);
           
            /*Archivo a escribir*/
            FileWriter fileEscritura = new FileWriter("Altas2.txt");
            PrintWriter pw = new PrintWriter(fileEscritura);
         
            /*Leer y escribir*/
            while((cadena = bf.readLine())!=null){
                String CadenaSal = "";
                String[] letras = cadena.split(",");
               
                for( int i = 0; i < letras.length;i++){
                   
                    if( i != (letras.length - 1) )
                        CadenaSal += letras[i] + ",";
                    else
                        CadenaSal += letras[i];
                }
                pw.println(CadenaSal);
            }
            bf.close();
            pw.close();
        }
        catch(IOException IOErr){
            IOErr.printStackTrace();
        }



muchisimas gracias! perdón soy muy vaga para acomodar el codigo, ahora pruebo el codigo que me mandaste, gracias!!!!!

marixxaa

Funciono!!! te lo re agradezco. Pase todo el día con esto y vos me lo solucionaste, un genio, abrazo.

0xFer

De nada  ::). Me gusta tu esfuerzo, la verdad muchos llegan aquí pidiendo ayuda pero ni siquiera lo intentan, al ver tu código decidí ayudarte con mucho gusto  ;D
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}