FTP: Difference between revisions

1,116 bytes added ,  9 years ago
(→‎{{header|Ruby}}: Added Ruby)
Line 2:
 
Connect to a server, change directory, list its contents and download a file as binary using the FTP protocol. Use passive mode if available.
 
=={{header|Go}}==
Using the FTP package from [https://godoc.org/github.com/stacktic/ftp github.com/stacktic/ftp].
<lang go>package main
 
import (
"fmt"
"io"
"log"
"os"
 
"github.com/stacktic/ftp"
)
 
func main() {
// Hard-coded demonstration values
const (
hostport = "localhost:21"
username = "anonymous"
password = "anonymous"
dir = "pub"
file = "somefile.bin"
)
 
conn, err := ftp.Connect(hostport)
if err != nil {
log.Fatal(err)
}
defer conn.Quit()
fmt.Println(conn)
 
if err = conn.Login(username, password); err != nil {
log.Fatal(err)
}
if err = conn.ChangeDir(dir); err != nil {
log.Fatal(err)
}
fmt.Println(conn.CurrentDir())
files, err := conn.List(".")
if err != nil {
log.Fatal(err)
}
for _, f := range files {
fmt.Printf("%v %12d %v %v\n", f.Time, f.Size, f.Type, f.Name)
}
 
r, err := conn.Retr(file)
if err != nil {
log.Fatal(err)
}
defer r.Close()
 
f, err := os.Create(file)
if err != nil {
log.Fatal(err)
}
defer f.Close()
 
n, err := io.Copy(f, r)
if err != nil {
log.Fatal(err)
}
 
fmt.Println("Wrote", n, "bytes to", file)
}</lang>
 
=={{header|Java}}==
Anonymous user