martes, 3 de agosto de 2010

Renombrar ficheros desde Java

Hoy tuve que hacer un programita muy tonto pero que me quitó muchas horas
de trabajo de monos, así que os dejo el código por si a alguien le sirve
del mismo modo que a mí.

El programa lo que hace es renombrar todos los ficheros de un directorio
desde java. Este directorio estaba lleno de imagenes en formato png y lo
que tuve que hacer es añadir al final del nombre la coletilla "_thumb" que
viene de thumbnail.

Código


package renombradodeficheros;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
*
* @author Jorge
*/
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        
        String path = "resources/directory/";

        File directory = new File(path);
        String[] files = directory.list();
        File f1,f2;
        String filename, filenameModif;
        int cutindex;
        for (int i = 0; i < files.length; i++) {

            filename = files[i];
            f1 = new File(path+"/"+filename);
            cutindex = filename.indexOf(".png");
            if (cutindex != -1)
            {
                filenameModif = filename.substring(0, cutindex)+"_thumb.png";
                f2 = new File(path+"/"+filenameModif);
                if (f1.renameTo(f2))
                    System.out.println("Renombrado");
                else
                    System.out.println("Fallo al renombrar");
            }
        }
    }
}

Trabajar con XML y C#

Hola a todos,

Hace tiempo que no escribo en el blog pero es que últimamente ando muy muy liado con los diferentes proyectos que estamos desarrollando en Syderis. Hoy os pongo un pequeño ejemplo de como leer y escribir XML con la API de .NET framework y C#.

Dado el xml:

<?xml version="1.0" encoding="utf-8" ?>
<sample>
<equipments>
   <equipment type="tipo1">
     <point x="1900" y="1000">
       <title>Titulo</title>
       <image >DSCN2903</image>
       <description>Esta es la descripción del primer punto</description>    
     </point>
     <point x="1000" y="2300">
       <title>Titulo</title>
       <image />DSCN2903
       <description>mirador2</description>    
     </point>
   </equipment>
</equipments>
</sample>



Código del lector:


public void Read(string filename)
       {
           XmlDocument xml = new XmlDocument();
           try
           {
               xml.Load(filename);
               XmlNodeList nodeEquipments = xml.GetElementsByTagName("Equipments");

               //Equipamientos
               XmlNodeList equipmentsNodes = ((XmlElement)nodeEquipments[0]).GetElementsByTagName("equipment");
               string sfilename;
               string stitle;
               string sdescription;
               string sx, sy;
               foreach (XmlElement equipment in equipmentsNodes)
               {
                   string stype = equipment.GetAttribute("type");
                   XmlNodeList pointsNodes = equipment.GetElementsByTagName("point");
                            
                          
                   foreach (XmlElement pointNode in pointsNodes)
                   {
                       sx = pointNode.GetAttribute("x");
                       sy = pointNode.GetAttribute("y");
                       stitle = pointNode.GetElementsByTagName("title")[0].InnerText;
                       sfilename = pointNode.GetElementsByTagName("image")[0].InnerText;
                       sdescription = pointNode.GetElementsByTagName("description")[0].InnerText;                      
                       Console.Writeline("type:"+stype+" coord:"+sx+sy+" filename"+sfilename+" title:"stitle+" description:"+sdescription);

                   }
              
               }
          
           }
           catch (XmlException e)
           {
               Console.WriteLine("XML file load Failure." + e.ToString());
           }
}




Código escritor:


public void Write(string filename)
       {
           XmlTextWriter xmlWriter = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
           xmlWriter.Formatting = Formatting.Indented;
           xmlWriter.WriteStartDocument();

           xmlWriter.WriteStartElement("Sample");

           //Equipments
           xmlWriter.WriteStartElement("Equipments");

           foreach (string etype in equipments.keys)
           {
               xmlWriter.WriteStartElement("equipment");
               xmlWriter.WriteAttributeString("type", etype);

               foreach (Equipment e in equipments[etype])
               {
                   //<point x="100" y="100">
                   xmlWriter.WriteStartElement("point");
                   xmlWriter.WriteAttributeString("x", e.Point.X.ToString());
                   xmlWriter.WriteAttributeString("y", e.Point.Y.ToString());

                   xmlWriter.WriteStartElement("title");
                   xmlWriter.WriteString(e.Title);
                   xmlWriter.WriteEndElement();

                   //<image />filename
                   xmlWriter.WriteStartElement("image");
                   xmlWriter.WriteString(e.Image);
                   xmlWriter.WriteEndElement();

                   //<description>mirador</description>
                   xmlWriter.WriteStartElement("description");
                   xmlWriter.WriteString(e.Description);
                   xmlWriter.WriteEndElement();

                   xmlWriter.WriteEndElement(); // End point
               }
               xmlWriter.WriteEndElement(); //End equipment
           }

           xmlWriter.WriteEndElement(); //End Equipments

           xmlWriter.WriteEndElement(); //End Sample

           xmlWriter.Flush();
           xmlWriter.Close();

       }