
com.sta.cts.ConvEncoding Maven / Gradle / Ivy
package com.sta.cts;
import java.util.Vector;
import java.util.Enumeration;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import com.sta.mlogger.MLogger;
/**
* Name: ConvEncoding
* Description: Klasse zum Konvertieren der Kodierung einer Text- bzw. XML- Datei.
*
* Copyright: Copyright (c) 2004, 2012, 2014, 2016, 2017, 2019, 2021
* Company: >StA-Soft<
* @author StA
* @version 1.0
*/
public class ConvEncoding
{
/**
* Textdatei mit vorgegebenen Encoding in Textdatei mit ebenfalls vorgegebenem
* Encoding konvertieren.
* @param sfn Quelldateiname
* @param senc Encoding der Quelldatei
* @param dfn Zieldateiname
* @param denc Encoding der Zieldatei
* @throws IOException im Fehlerfall
*/
public static void convEnc4TXT(String sfn, String senc, String dfn, String denc) throws IOException
{
InputStreamReader isr = new InputStreamReader(new FileInputStream(sfn), senc);
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(dfn), denc);
while (isr.ready())
{
int i = isr.read();
osw.write(i);
}
osw.close();
isr.close();
}
/**
* XML-Datei (Encoding in der XML-Datei angegeben) in XML-Datei mit
* vorgegebenem Encoding konvertieren.
* @param s Name der Quell-XML-Datei
* @param d Name der Ziel-XML-Datei
* @param e Encoding der Ziel-XML-Datei
* @throws IOException im Fehlerfall
*/
public static void convEnc4XML(String s, String d, String e) throws IOException
{
XMLScanner xs = new XMLScanner();
xs.init(s);
xs.initH(null);
try
{
XMLGenerator xg = new XMLGenerator();
xg.createXML(d, e);
try
{
Object obj;
while ((obj = xs.getToken()) != null)
{
if (obj instanceof XMLTag)
{
XMLTag t = (XMLTag) obj;
if (t.isOpen())
{
xg.openTag(t.getName());
Enumeration names = t.getAttrNames();
if (names != null)
{
while (names.hasMoreElements())
{
String name = names.nextElement();
String value = t.getAttr(name);
xg.putAttr(name, value);
}
}
}
if (t.isClose())
{
xg.closeTag(t.getName());
}
}
else if (obj instanceof String)
{
xg.putContent((String) obj);
}
}
}
finally
{
xg.closeXML();
}
}
finally
{
xs.done();
}
}
/**
* Analyse der Kommandozeilenparameter als Vector.
* @param params Kommandozeilenparameter als Vector
* @throws IOException im Fehlerfall
*/
public static void run(Vector params) throws IOException
{
if (params.size() == 4)
{
String sfn = (String) params.get(0);
String senc = (String) params.get(1);
String dfn = (String) params.get(2);
String denc = (String) params.get(3);
convEnc4TXT(sfn, senc, dfn, denc);
}
else if (params.size() == 3)
{
String s = (String) params.get(0);
String d = (String) params.get(1);
String e = (String) params.get(2);
convEnc4XML(s, d, e);
}
else
{
throw new IOException("Missing parameter.");
}
}
/**
* Main-Methode.
* @param args Kommandozeilenparameter
*/
public static void main(String[] args)
{
// ConvEncoding ce1 = new ConvEncoding();
Vector v = new Vector();
for (int i = 0; i < args.length; i++)
{
v.add(args[i]);
}
try
{
run(v);
}
catch (Exception e)
{
MLogger.err("", e);
MLogger.err("");
MLogger.err("Usage (Text) : java ... ConvEncoding Src SrcEnc Dst DstEnc");
MLogger.err("Usage (XML) : java ... ConvEncoding Src Dst DstEnc");
MLogger.err("");
}
}
//===========================================================================
/**
* Dummy-Constructor.
*/
protected ConvEncoding()
{
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy