看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}
------解决方案--------------------
学习了,谢谢