This language bar is your friend. Select your favorite languages!
Select your favorite languages :
- Or search :
character, dimension(n_buff) :: buffer
open (newunit=u_r,file="src", action="read", form="unformatted", &
access="stream")
open(newunit=u_w,file="dst", action="write", form="unformatted",&
access="stream")
inquire(unit=u_r,size=sz)
do while (sz > 0)
n_chunk = min(sz, n_buff)
read (unit=u_r) buffer(1:n_chunk)
write (unit=u_w) buffer(1:n_chunk)
sz = sz - n_chunk
end do
This opens the files, gets the file size and copies with size buffer or the rest of the file, whichever is smaller.
func copy(dst, src string) error {
data, err := os.ReadFile(src)
if err != nil {
return err
}
stat, err := os.Stat(src)
if err != nil {
return err
}
err = os.WriteFile(dst, data, stat.Mode())
if err != nil {
return err
}
return os.Chmod(dst, stat.Mode())
}
This is fine if the file is small enough to fit in memory.
This preserves the source file's mode and permission bits (overriding umask in Unix).
This preserves the source file's mode and permission bits (overriding umask in Unix).
func copy(dst, src string) error {
f, err := os.Open(src)
if err != nil {
return err
}
defer f.Close()
stat, err := f.Stat()
if err != nil {
return err
}
g, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, stat.Mode())
if err != nil {
return err
}
defer g.Close()
_, err = io.Copy(g, f)
if err != nil {
return err
}
return os.Chmod(dst, stat.Mode())
}
This can handle large files.
func copy(dst, src string) error {
data, err := os.ReadFile(src)
if err != nil {
return err
}
stat, err := os.Stat(src)
if err != nil {
return err
}
return os.WriteFile(dst, data, stat.Mode())
}
This is fine if the file is small enough to fit in memory.
Warning: in Unix, the destination file's mode and permission bits may be different from the source file's, because umask is applied.
Warning: in Unix, the destination file's mode and permission bits may be different from the source file's, because umask is applied.
programming-idioms.org