// ==========================================================================
// $Id: fcopy.go,v 1.1 2014/03/31 21:34:24 jlang Exp $
// CSI2120 GO: File I/O
// ==========================================================================
// (C)opyright:
//
//   Jochen Lang
//   EECS, University of Ottawa
//   800 King Edward Ave.
//   Ottawa, On., K1N 6N5
//   Canada. 
//   http://www.eecs.uottawa.ca
// 
// Creator: Jochen Lang (based on example by R. Laganiere)
// Email:   jlang@eecs.uottawa.ca
// ==========================================================================
// $Log: fcopy.go,v $
// Revision 1.1  2014/03/31 21:34:24  jlang
// "Added examples for file I/O, methods, interfaces"
//
// ==========================================================================
package main
import (
	"os"
	"io"
	"fmt"
)

func main() {
	var inN string
	outN := "out.txt"
	fmt.Printf("File Copy")
	fmt.Printf("Input name? ")
	fmt.Scanf("%s", &inN)
	fmt.Printf("\nOutput name: %s\n", outN)
	bytesOut, err := fCopy(outN,inN)
	if err != nil {
		fmt.Printf( "Error: %s\n", err );
	}  
	fmt.Printf( "%d Bytes written.\n", bytesOut ) 
}


func fCopy(outN, inN string) (bytesOut int64, err error) {
	inF, err := os.Open(inN)
	if err != nil {
		return
	}
	defer inF.Close()
	outF, err := os.Create(outN)
	if err != nil {
		return
	}
	defer outF.Close()
	bytesOut, err = io.Copy(outF, inF) 
	return
}
