Forums » User questions »
SRM - file output stream
Added by Hajnal Akos over 12 years ago
Dear Developers,
When I create a file and then try to open its output stream for writing, I get exception in either append or overwrite mode.
Here is the code:
import org.ogf.saga.context.*;
import org.ogf.saga.file.*;
import org.ogf.saga.namespace.*;
import org.ogf.saga.session.*;
import org.ogf.saga.url.*;
public class Srm {
public static void main(String[] args) {
try {
URL fileUrl = URLFactory.createURL("srm://grid143.kfki.hu/dpm/kfki.hu/home/hungrid/akostest/test.txt");
Session session = SessionFactory.createSession(false);
Context ctx = ContextFactory.createContext("Globus");
ctx.setAttribute(Context.USERPROXY, "x509up");
ctx.setAttribute(Context.CERTREPOSITORY, "/.globus/certificates/");
session.addContext(ctx);
FileFactory.createFile(session, fileUrl, Flags.CREATE.getValue());
FileFactory.createFileOutputStream(session, fileUrl, false);
// => Exception: AlreadyExists: File already exists: srm://grid143.kfki.hu/.../test.txt
FileFactory.createFileOutputStream(session, fileUrl, true);
// => Exception: BadParameter: APPEND is not supported by this adaptor
} catch (Exception e) { e.printStackTrace(); }
}
}
As I remember the same sequence worked for other protocols, so I don't know what is the problem. Creation flags are different in the case of srm? Or something else is needed?
Thanks,
Akos Hajnal
[main] INFO data.SRM22DataAdaptor - SRM Version is v2.2 [backend_type=DPM;backend_version=1.8.6-0;]
Replies (3)
RE: SRM - file output stream
-
Added by Hajnal Akos over 12 years ago
Just one more note. It seems that without explicitely creating the file, both input- and output streams work well:
byte [] content = new byte [] {'c', 'o', 'n', 't', 'e', 'n', 't'};
FileOutputStream fos = FileFactory.createFileOutputStream(session, fileUrl, false);
fos.write(content, 0, content.length);
fos.close();
FileInputStream fis = FileFactory.createFileInputStream(session, fileUrl);
int b; while ((b = fis.read()) > 0) { System.out.print((char) b); }
fis.close();
Akos
RE: SRM - file output stream
-
Added by Schwarz Lionel over 12 years ago
Akos,
The boolean parameter of FileFactory.createFileOutputStream is the 'append flag', not 'overwrite'.
If I remember well, SRM does not support modification of a file (append or rewrite).
So if you want to create a FileOutputStream, you have to make sure beforehands that the file does not exist already.
Lionel
RE: SRM - file output stream
-
Added by Hajnal Akos over 12 years ago
Ok, thanks, I am new to this "write-once" stuff...
Akos