A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王冰 于 2012-7-12 15:20 编辑

private void showDir()
{
      String dirPath = tf.getText();//这里获得的是形如"F:\javaCode\day12"这样的路径,也就是下面图中的那样
      File dir = new File(dirPath);//故这里File接收进来的应该也是上面那样的路径,那么他是怎么样分析的?
                                              //File构造方法中不是应该接收的是形如"F:\\javaCode\\day12"这样的路径吗?
         
      if (dir.exists() && dir.isDirectory())
      {
           ta.setText("");
           String[] names = dir.list();
           for (String name : names )
          {
              ta.append(name+"\r\n");
           }
      }
      else
     {
            String info = "找不到"+dirPath+"目录,请确认此目录有效或重新输入目录";
            lab.setText(info);
            d.setVisible(true);
      }
}

QQ截图20120712151320.jpg (24.19 KB, 下载次数: 17)

运行后输入的路径

运行后输入的路径

2 个回复

倒序浏览
TextField的getText会对你读到的
"F:\javaCode\day12"
中的\进行自动转义
实际上字符串里面存的还是"F:\\javaCode\\day12"
回复 使用道具 举报
本帖最后由 achilles 于 2012-7-12 17:59 编辑

//File file = new File("c:\\\\dir");
//File file = new File("c:////dir");
//File file = new File("c:/dir");
file.mkdir();
我做了实验,以上3种写法都可以成功创建一个名为dir的文件

String dir = "c:\\dir"
File file = new File(dir);
System.out.println(dir);
不知道楼主有没有注意过这个细节,dir我们写的时候是c:\\dir 但你打印dir的时候控制台显示的却是c:\dir
还有我们直接写"c:\dir"编译器就会报错,所以我们写成"c:\\dir"实际上是为了"欺骗"编译器的


我们都知道java不具备在XP系统中创建文件的能力,它实际上上调用系统的资源创建的文件,根据以上的实验,我个人推断系统在拿到我们输入的字符串路径会按照类似于正则的一种规则,比如按照"\\+"和"/+"进行切割分离出路径,然后再根据我们的Java命令创建文件对象
所以我认为你构造函数中传入的dirpath实际上还是"F:\javaCode\day12"这个字符串
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马