Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.xmlcalabash.extensions.fileutils;
  
 
 import java.io.File;
 import java.net.URI;

Created by IntelliJ IDEA. User: ndw Date: May 24, 2009 Time: 3:17:23 PM To change this template use File | Settings | File Templates.
 
 public class Copy extends DefaultStep {
     private static final QName _href = new QName("href");
     private static final QName _target = new QName("target");
     private static final QName _fail_on_error = new QName("fail-on-error");
     private static final int bufsize = 8192;
 
     private WritablePipe result = null;

    
Creates a new instance of UriInfo
 
     public Copy(XProcRuntime runtimeXAtomicStep step) {
         super(runtime,step);
     }
 
     public void setOutput(String portWritablePipe pipe) {
          = pipe;
     }
 
     public void reset() {
         .resetWriter();
     }
 
     public void run() throws SaxonApiException {
         super.run();
 
         if (.getSafeMode()) {
             throw XProcException.dynamicError(21);
         }
 
         boolean failOnError = getOption(true);
 
         RuntimeValue href = getOption();
         URI uri = href.getBaseURI().resolve(href.getString());
         File file;
         if (!"file".equals(uri.getScheme())) {
             throw new XProcException(.getNode(), "Only file: scheme URIs are supported by the copy step.");
         } else {
             file = new File(uri.getPath());
         }
 
         if (!file.exists()) {
              throw new XProcException(.getNode(), "Cannot copy: file does not exist: " + file.getAbsolutePath());
         }
 
         if (file.isDirectory()) {
              throw new XProcException(.getNode(), "Cannot copy: file is a directory: " + file.getAbsolutePath());
         }
 
         href = getOption();
         uri = href.getBaseURI().resolve(href.getString());
         File target;
         if (!"file".equals(uri.getScheme())) {
             throw new XProcException(.getNode(), "Only file: scheme URIs are supported by the copy step.");
         } else {
             target = new File(uri.getPath());
         }
 
         if (target.isDirectory()) {
             target = new File(targetfile.getName());
             if (target.isDirectory()) {
                 throw new XProcException(.getNode(), "Cannot copy: target is a directory: " + target.getAbsolutePath());
             }
         }
 
         TreeWriter tree = new TreeWriter();
         tree.startDocument(.getNode().getBaseURI());
         tree.addStartElement(.);
         tree.startContent();
 
         tree.addText(target.toURI().toASCIIString());
 
        try {
            FileInputStream src = new FileInputStream(file);
            FileOutputStream dst = new FileOutputStream(target);
            byte[] buffer = new byte[];
            int read = src.read(buffer, 0, );
            while (read >= 0) {
                dst.write(buffer, 0, read);
                read = src.read(buffer, 0, );
            }
            src.close();
            dst.close();
        } catch (FileNotFoundException fnfe) {
            throw new XProcException(fnfe);
        } catch (IOException ioe) {
            throw new XProcException(ioe);
        }
        tree.addEndElement();
        tree.endDocument();
        .write(tree.getResult());
    }
New to GrepCode? Check out our FAQ X