程序采用命令行参数拷贝一个文件,然后输出该文件的内容.
import java.io.*;
public class copyAndShow{
// 文件拷贝方法
void copy(String fromFile, String toFile)
throws IOException{
File src=new File(fromFile);
File dst=new File(toFile); //作用??就是什么意思??
if(!src.exists( )){
System.out.println(fromFile+" does not exist!");
System.exit(1);
}
if(!src.isFile( )){
System.out.println(fromFile+" is not a file!");
System.exit(1);
}
if(!src.canRead( )){
System.out.println(fromFile+" is unreadable!");
System.exit(1);
}
if(dst.exists( )){
if(!dst.canWrite( )){
System.out.println(toFile+" is unwriteable!");
System.exit(1);
}
}
// 执行拷贝操作
FileInputStream fin=null; // 采用文件输入流
FileOutputStream fout=null; // 什么意思呢?
try{ fin=new FileInputStream(src);
fout=new FileOutputStream(dst); //又是什么意思?
byte buffer[]=new byte[4096];
int bytesRead; // 从缓冲区读入的字节数
while((bytesRead=fin.read(buffer))!=-1)
fout.write(buffer,0,bytesRead);
}finally{
if(fin!=null) //为什么这时候是异常关闭呢? fin!=null 这句话代表什么意思?
try{ fin.close();
fout.close();
}catch(IOException e){
System.out.println("关闭文件异常");
}
}
}
// 显示文件内容方法
void showContents(String fileName)throws IOException{
File f=new File(fileName);
RandomAccessFile fin=new
RandomAccessFile(f,"rw");
System.out.println("File length: "+fin.length( ));
// 文件长度
System.out.println("position:"+fin.getFilePointer( ));
// 按行显示文件内容
while(fin.getFilePointer( )<fin.length( ))
System.out.println(fin.readLine( ));
fin.close( );
}
public static void main(String args[ ]){
if(args.length!=2){
System.out.println("Usage: java copyAndShow
<srcFileName dstFileName>");
System.exit(1);
}
try{ copyAndShow obj=new copyAndShow ();
obj.copy(args[0],args[1]);
obj.showContents(args[1]);
}catch(IOException e){
System.out.println(e.getMessage( ));
}
}
}