dfm.java
来自「该文件包括一个代码文件DFM.java」· Java 代码 · 共 314 行
JAVA
314 行
/*
* Copyright (c) 2007 Dragon Sun. All rights reserved.
*本代码基于Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)平台开发
* 任何人可以将本代码用于非商业性的学习、使用、修改.
* 本代码实现建立文件目录及文件,拷贝文件、删除文件,显示文件列表,每项功能都做了异常处理
* 本代码为本人第一次编写的java代码,如有什么不足,或您对本代码有任何意见,欢迎联系我
* 本人联系方式:Email:dragonleehom@yahoo.com.cn;QQ:51693531;MSN:draognleehomone@hotmail.com.
*2007-1-1 21:31
*/
import java.io.*;
public class DFM {
/****************显示帮助***********************/
public static void usage(int wh) {
if(wh==0)//帮助文档提示语句
{
System.out.println("+--帮助:命令格式--java DFM [/主参数] [/子参数1]...[/子参数n]");
System.out.println("|---[/?] 帮助" );
System.out.println("|--+[/1] 建立目录" );
System.out.println("| |------1.[完整目录路径]" );
System.out.println("|--+[/2] 复制文件" );
System.out.println("| |------1.[源文件路径]" );
System.out.println("| |------2.[目的文件路径]" );
System.out.println("|--+[/3] 删除文件" );
System.out.println("| |------1.[完整文件路径]" );
System.out.println("|--+[/4] 创建文件" );
System.out.println(" |------1.[完整文件夹路径]" );
System.out.println("|--+[/5] 文件列表" );
System.out.println(" |------1.[完整文件夹路径]" );
System.exit(0);
};
if(wh==1)//建立目录帮助提示
{
System.out.println("建立目录的正确命令应该是 java DFM /1 x:/xxx/.../xx ");
System.exit(0);
};
if(wh==2)//复制文件帮助提示
{
System.out.println("复制文件的正确命令应该是 java DFM /2 x:/xxx/.../xx y:/yyy/.../yy ");
System.exit(0);
};
if(wh==3)//删除文件帮助提示
{
System.out.println("删除文件的正确命令应该是 java DFM /3 x:/xxx/.../xx ");
System.exit(0);
};
if(wh==4)//文件列表帮助提示
{
System.out.println("创建文件的正确命令应该是 java DFM /4 x:/xxx/.../xx.xx ");
System.exit(0);
};
if(wh==5)//文件列表帮助提示
{
System.out.println("文件列表的正确命令应该是 java DFM /5 x:/xxx/.../xx ");
System.exit(0);
};
}
/********************main*************/
public static void main(String[] args)
{
String kk;
if(args.length<1 || args.length>3)
usage(0);
/**********选择帮助***********/
else if (args[0].equals("/?"))
{
usage(0);
}
/**********选择建立目录***********/
else if (args[0].equals("/1"))
{
if(args.length!=2)
usage(1);//判断输入格式是否有错误
else
{
try
{ creatdir(args[1]); }//调用建立目录方法
catch (SecurityException e)
{ System.err.println(e.getMessage());}//捕获错误并显示
}
}
/**********选择复制文件***********/
else if (args[0].equals("/2"))
{
if(args.length==2)
{
kk=System.getProperty("user.dir");;
}
else
{
kk=args[2];
}
if(args.length != 3 && args.length !=2)
usage(2);//判断输入格式是否有错误
else
{
try { copy(args[1], kk );}//调用建立目录方法
catch (IOException e) { System.err.println(e.getMessage());}//捕获错误并显示
}
}
/********** 选择删除文件**********/
else if (args[0].equals("/3"))
{
if(args.length !=2)
usage(3);//判断输入格式是否有错误
else
{
try { delete(args[1]); }//调用建立目录方法
catch (IllegalArgumentException e) { System.err.println(e.getMessage());//捕获错误并显示
}
}
}
/********** 选择创建文件**********/
else if (args[0].equals("/4"))
{
if(args.length !=2)
usage(4);//判断输入格式是否有错误
else
{
try { creatfile(args[1]); }
catch (IOException e) { System.err.println(e.getMessage());
}
}
}
/************选择文件列表**************/
else if (args[0].equals("/5"))
{
if(args.length==1)
{
kk=System.getProperty("user.dir");;
}
else
{
kk=args[1];
}
if(args.length<1 || args.length>2)
usage(5);//判断输入格式是否有错误
else
{
try { listfile(kk); }//调用建立目录方法
catch (SecurityException e) { System.err.println(e.getMessage());//捕获错误并显示
}
}
}
else
usage(0);//如果输入仍然有误,显示帮助
}
/**************文件复制方法*/
public static void copy(String from_name, String to_name)
throws IOException
{
File from_file = new File(from_name); // 获取文件对象
File to_file = new File(to_name);
// 确定文件是否存在、路径是否正确、是否可读
if (!from_file.exists())
abort("原文件"+ from_name+"不存在: " );
if (!from_file.isFile())
abort("文件路径"+ from_name+"有误: " );
if (!from_file.canRead())
abort("原文件"+ from_name+"不可读: " );
// 如果目标路径存在,将源文件名添加于目标路径之后
if (to_file.isDirectory())
to_file = new File(to_file, from_file.getName());
// 如果目标文件已经存在,确定其是否可写,并在覆盖前询问是否确定覆盖
// 如果目标文件不存在,确定路径存在并可写
if (to_file.exists()) {
if (!to_file.canWrite())
abort("目标文件"+ to_name+"无法写入: " );
// 确认覆盖文件
System.out.print("覆盖已有文件" + to_file.getName() +
"? (Y/N): ");
System.out.flush();
//获取用户返回值
BufferedReader in=
new BufferedReader(new InputStreamReader(System.in));
String response = in.readLine();
// 检测返回值,如果否则取消复制.
if (!response.equals("Y") && !response.equals("y"))
abort("文件复制已取消.");
}
else {
String parent = to_file.getParent(); // 目标路径
File dir = new File(parent); // 转换成文件对象
if (!dir.exists())
abort("目标路径"+parent+"不存在: ");
if (dir.isFile())
abort("输入目标"+ parent+"不是一个路径: " );
if (!dir.canWrite())
abort("目标路径"+ parent+"无法写入: " );
}
FileInputStream from = null; //源文件流
FileOutputStream to = null; // 目的文件流
try {
from = new FileInputStream(from_file); // 创建一个输入流
to = new FileOutputStream(to_file); // 创建一个输出
byte[] buffer = new byte[4096]; // 获取文件内容
int bytes_read; // 缓存中的byte数
while((bytes_read = from.read(buffer)) != -1) // 一直读到文件结束
to.write(buffer, 0, bytes_read); // 写文件
}
//关闭流
finally {
if (from != null) try { from.close(); } catch (IOException e) { ; }
if (to != null) try { to.close(); } catch (IOException e) { ; }
}
if(to_file.exists())
System.out.println("复制文件成功!");
}
/**复制文件 抛出意外*/
private static void abort(String msg) throws IOException
{
throw new IOException("文件复制出错: " + msg);
}
/***************文件删除方法*/
public static void delete(String filename) {
// 创建文件对象
File f = new File(filename);
// 确定文件存在并且没有写保护
if (!f.exists()) fail("删除错误: 文件或路径"+filename+"不存在: " );
if (!f.canWrite()) fail("删除错误: 文件"+ filename+"写保护: " );
//如果是路径,确定路径是空的
if (f.isDirectory()) {
String[] files = f.list();
if (files.length > 0)
fail("删除错误:路径"+ filename+"非空: " );
}
boolean success = f.delete();
// 如果发生了在前面没有考虑到的意外,使删除失败,抛出一个意外
if (!success) fail("由于位置原因删除失败");
else
System.out.println("删除文件成功!");
}
/** 删除文件抛出意外 */
protected static void fail(String msg) throws IllegalArgumentException {
throw new IllegalArgumentException(msg);
}
/************建立文件路径方法*/
public static void creatdir(String filename) {
File f = new File(filename);
// 确定目录不存在
if (f.exists()) fauls("创建错误:路径"+filename+"已经存在: " );
boolean success = f.mkdirs();
if (!success) fauls("由于未知原因建立路径失败");
else
System.out.println("创建目录成功!");
}
/** 创建目录抛出意外 */
protected static void fauls(String msg) throws SecurityException{
throw new SecurityException(msg);
}
/****************文件列表方法*/
public static void listfile(String filename)
{
File f = new File(filename);
// 确定目录存在且输入为路径
if (!f.isDirectory()) fauls("列表错误:路径"+filename+"有错误");
if (!f.exists()) fauls("列表错误:路径"+filename+"不存在: ");
String[] allfiles = f.list();
if (allfiles.length==0) fauls("目录"+filename+"下没有文件");
for(int i = 0; i < allfiles.length; i++)
System.out.println(allfiles[i]);
}
/***********建立新文件*/
public static void creatfile(String filename) throws IOException {
File f = new File(filename);
// 确定目录不存在
if (f.exists()) Fileabort("文件"+filename+"已经存在: " );
boolean success = f.createNewFile();
if (!success) Fileabort("由于未知原因建立路径失败");
else
System.out.println("创建文件成功!");
}
private static void Fileabort(String msg) throws IOException
{
throw new IOException("文件创建出错: " + msg);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?