Hi, Jan

thanks for the task!!

Works great, but one thing similar to the echo task =

f.e. if i write :

..........<echo file="foo.txt">
..........bla
..........</echo>

all the blanks (the '.') are echoed to the file
if i write
<echo file="foo.txt">bla</echo> it's echoed without blanks.

So when using your task i have to write the insert part
all on one line, cause if writing :

<insert inputfile="orig.txt" outputfile="new.txt" after="2">
The text to be inserted.
</insert>

the file would contain two line breaks i do not want :
bla
bla

The text to be inserted.

bla
bla
bla

Had to look more than two times until i discovered what
went on here.

Is it possible to get rid of that 'echo' behaviour ?
A build script with all those oneliners isn't that readable ...

Gilbert

Quick hack:

<project>
    <taskdef name="insert" classname="InsertTask" classpath="."/>
    <insert inputfile="orig.txt" outputfile="new.txt" after="5">
        The text to be inserted.
        Maybe multiple lines?
    </insert>
</project>



import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;

public class InsertTask {
int after;
File inputfile;
File outputfile;
String text = "";


public void execute() {
try {
LineNumberReader inp = new LineNumberReader (new
FileReader(inputfile));
BufferedWriter out = new BufferedWriter(new
FileWriter(outputfile));
String line;
while ((line = inp.readLine()) != null) {
out.write(line);
out.write(System.getProperty("line.separator"));
if (inp.getLineNumber()==after) {
out.write(text);
out.write(System.getProperty("line.separator"));
}
}
inp.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void addText(String text) {
this.text += text;
}
public void setAfter(int after) {
this.after = after;
}
public void setInputfile(File inputfile) {
this.inputfile = inputfile;
}
public void setOutputfile(File outputfile) {
this.outputfile = outputfile;
}
public static void main(String[] args) {
InsertTask ins = new InsertTask();
ins.setInputfile(new File(args[0]));
ins.setOutputfile(new File(args[1]));
ins.setAfter(Integer.parseInt(args[2]));
for(int i=3; i<args.length; i++) ins.addText(args[i]+" ");
ins.execute();
}
}



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to