Note that it is not important whether the source and destination files for these programs are local or remote.
This program does a simple file copy.
Usage:
% java xcopy src dest
import java.io.*;
import com.sun.xfile.*;
class xcopy {
public static void main(String av[]) {
try {
String srcFile = av[0];
String dstFile = av[1];
XFileInputStream in = new XFileInputStream(srcFile)
XFileOutputStream out = new XFileOutputStream(dstFile);
int c;
byte[] buf = new byte[32768];
long elapsedtime = System.currentTimeMillis();
int filesz = 0;
while ((c = in.read(buf)) > 0) {
filesz += c;
out.write(buf, 0, c);
System.out.print("" + filesz);
}
System.out.println();
in.close();
out.close();
elapsedtime = System.currentTimeMillis() - elapsedtime;
int rate = (int) (filesz / (elapsedtime / 1000.0) / 1024);
System.err.println(filesz + " bytes copied @ " + rate + "Kb/sec");
} catch (IOException e) {
System.err.println(e);
}
}
}
|
This program takes a file or a directory hierarchy and copies it somewhere else.
Usage:
% java rcopy src dest
import java.io.*;
import com.sun.xfile.*;
class rcopy {
static void copy(XFile src, XFile dst) throws IOException {
if (src.isDirectory()) {
dst.mkdir();
String[] dirList = src.list();
for (int i = 0; i < dirList.length; i++)
String entry = dirList[i];
copy(new XFile(src, entry), new XFile(dst, entry));
}
} else { // assume it's a file
XFileInputStream in = new XFileInputStream(src);
XFileOutputStream out = new XFileOutputStream(dst);
int c;
byte[] buf = new byte[32768];
while ((c = in.read(buf)) > 0)
out.write(buf, 0, c);
in.close();
out.close();
}
}
public static void main(String av[]) {
try {
copy(new XFile(av[0]), new XFile(av[1]));
} catch (IOException e) {
System.err.println(e);
e.printStackTrace();
}
}
}
|