FileCopy

FileCopy.c

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])                              /* (A) */
{
    FILE *in, *out;                                           /* (B) */
    int ch;

    if ( argc != 3 ) {                                        /* (C) */
        fprintf( stderr, "usage: copy in_file out_file\n" );   
        exit( EXIT_FAILURE );                               
    }
  
    if ( ( fopen_s(&in,argv[1], "rb" ) ) != 0 ) {             /* (D) */
        fprintf( stderr, "Can't open %s\n", argv[1] );      
        exit( EXIT_FAILURE );                               
    }

    if ( ( fopen_s(&out,argv[2], "wb" ) ) != 0 ) {            /* (E) */
        fprintf( stderr, "Can't open %s\n", argv[2] );      
        fclose( in );                                
        exit( EXIT_FAILURE );                               
    }

    while ( ( ch = getc( in ) ) != EOF )                      /* (F) */
        if ( putc( ch, out ) == EOF )                         /* (G) */
            break;                                          
 
    if ( ferror( in ) )                                       /* (H) */
        printf( "Error while reading source file.\n" );     
    if ( ferror( out ) )                                      /* (I) */
        printf( "Error while writing into dest file.\n" );  

    fclose( in );                                             /* (J) */
    fclose( out );                                            /* (K) */
    return 0;
}

FileCopy.cpp

#include <iostream>          // for cerr
#include <fstream>                                                //(A)
#include <cstdlib>
using namespace std;                                              //(B)

void print_error(const char*, const char* = "");                 //(C)

int main(int argc, char* argv[])                                  //(D)
{
    if (3 != argc)                                        
        print_error("usage: copy source dest"); 

    ifstream in( argv[1], ios::binary );                          //(E)
    if (!in)                                            
        print_error( "can't open", argv[1] );       
  
    ofstream out( argv[2], ios::binary );                         //(F)
    if (!out)                                              
        print_error( "can't open", argv[2] );      
  
    char ch;                                                      //(G)
    while ( in.get(ch) )                                          //(H)
        out.put( ch );                                            //(I)
        
    if ( !in.eof() )                                              //(J)
        print_error("something strange happened");          
    return 0;
}

void print_error(const char* p, const char* p2) {                 //(K)
    cerr << p << ' ' << p2 << '\n';                               //(L)
    exit(1);                                                      //(M)
} 

FileCopy.java


import java.io.*;                                                 //(A)

class FileCopy {                                                  //(B)

    public static void main( String[] args )                      //(C)
    {
        int ch = 0;                              
        FileInputStream in = null;                                //(D)
        FileOutputStream out = null;                              //(E)
  
        if ( args.length != 2 ) {                                 //(F)
            System.err.println( "usage: java FileCopy source dest" );
            System.exit( 0 );
        }
        try {                                    
            in = new FileInputStream( args[0] );                  //(G)
            out = new FileOutputStream( args[1] );                //(H)
     
            while ( true ) {                       
                ch = in.read();                                   //(I)
                if (ch == -1) break;                   
                out.write(ch);                                    //(J)
            }
            out.close();                                          //(K)
            in.close();                                           //(L)
        } catch (IOException e) {                
          System.out.println( "IO error" );    
        }  
    }
}

FileCopy.py

' example of file processing in Python '

import sys

# access command line arguments (p 338)
print 'you entered', len(sys.argv), 'arguments.'
print 'they were:', str(sys.argv)

#open input file
filename = sys.argv[1]
print 'input file: ', filename
try:
	inp = open(filename,'r')
except IOError, e:
	print "can't open:",e
	exit()

filename = sys.argv[2]
print 'output file: ', filename
try:
	out = open(filename,'w')
except IOError, e:
	print "can't open:",e
	inp.close()
	exit()

for eachline in inp:
	out.write(eachline)

inp.close()
out.close()


Maintained by John Loomis, last updated 29 Dec 2006