// ========================================================================== // $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 }