Rajarsh and Sulev are right, you need a close in there to flush the buffers.
Thus:
public static void writeSDF() throws IOException, CDKException {
String filename = "/Users/lochana/Desktop/test.sdf";
SDFWriter writer = new SDFWriter(new FileWriter(new File(filename)));
for (IAtomContainer ac : compounds) {
writer.write(ac);
}
writer.close();
System.out.println("Done!");
}
However, this isn't very good coding practice because it doesn't cover
exception handling. Doing it properly is a bit tricky, but Java 7 now has a new
syntax that does all this for you:
public static void writeSDF() throws IOException, CDKException {
String filename = "/Users/lochana/Desktop/test.sdf";
try (SDFWriter writer = new SDFWriter(new FileWriter(new File(filename)))) {
for (IAtomContainer ac : compounds) {
writer.write(ac);
}
}
System.out.println("Done!");
}
Unfortunately this doesn't actually work for SDKWriter because SDKWriter
doesn't implement java.io.Closeable. So, a suggestion for change: all CDK
writers and readers that have a close() method should have "implements
Closeable" added to their class definition. That should be enough to allow this
really useful idiom to be used.
Jonty
------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Cdk-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cdk-user