日期:2014-05-17  浏览次数:20699 次

看JAVA IO流找出以前C#未解决的问题
今天看了一下Java IO 流,
  当我看到File的操作时代码如下:
  01public class File_test1 {
  02 public static void main(String[] args) {
  03 File f = new File("E:", "a.txt");
  04 try {
  05 if (f.exists()) {
  06 System.out.println("文件存在!");
  07 System.out.println("文件名:"
  08 + f.getName()
  09 .substring(0, f.getName().lastIndexOf('.')));
  10 System.out.println("文件相对路径:" + f.getPath()); // 相对路径
  11 System.out.println("文件相对路径:" + f.getAbsolutePath()); // 绝对路径
  12 System.out.println("文件父亲目录:" + f.getParent());
  13 File p = f.getParentFile();// 获取父目录文件
  14 System.out.println("父目录绝对路径:" + p.getAbsolutePath());
  15 System.out.print("文件读取权限:");
  16 System.out.println(f.canRead() ? "可读" : "不可读");
  17 System.out.print("是否可写:");
  18 System.out.println(f.canWrite() ? "可写" : "不可写");
  19 System.out.print("是否目录:");
  20 System.out.println(f.isDirectory() ? "是" : "否");
  21 System.out.print("是否文件:");
  22 System.out.println(f.isFile()?"是":"否");
  23 System.out.print("是否隐藏:");
  24 System.out.println(f.isHidden()?"是":"否");
  25 System.out.println("文件长度:"+f.length());
  26
  27 } else {
  28 System.out.println("文件不存,将创建文件");
  29 f.createNewFile();
  30 }
  31 } catch (Exception e) {
  32 // TODO: handle exception
  33 System.out.println(e.getMessage());
  34 }
  35
  36 }
  37}
  当看到File中rename() 方法时突然想到了咱们C#中的文件操作好像没重命名,以前做的时候是将Replace()的第一个参数认为是源路径了,第二个参数认为是目标路径,当看了API后,后悔到极点,原来第一个参数是目标路径,第二个是目标路径备份,这样才悄然大悟。
  源码如下(正确):
  01static void Main(string[] args)
  02{
  03
  04 try
  05 {
  06 string OriginalFile = "E:\\a.txt"; //原来的文件
  07 string FileToReplace = "E:\\b.txt"; //替换的文件
  08 string BackUpOfFileToReplace = "E:\\b.txt.bac"; //替换文件的备份
  09 FileInfo fInfo = new FileInfo(OriginalFile); //初始化源文件
  10 fInfo.Replace(FileToReplace,BackUpOfFileToReplace); //是否忽略合并时的错误
  11 File.Delete(BackUpOfFileToReplace);
  12 }
  13 catch (Exception e)
  14 {
  15 Console.WriteLine(e);
  16 }
  17}

------解决方案--------------------
学习了,谢谢