暖冬的源码分享

 找回密码
 立即加入

QQ登录

只需一步,快速开始

搜索
热搜: 巧借
查看: 7830|回复: 0

[转]JAVA中file.separator ,path.separator,line.separator

[复制链接]
发表于 2012-4-16 00:05:28 | 显示全部楼层 |阅读模式
在sun官方中文文档中,System.getProperty("")方法中有着这样的翻译:
file.separator 文件分隔符(在 UNIX 系统中是“/”)
path.separator 路径分隔符(在 UNIX 系统中是“:”)
line.separator 行分隔符(在 UNIX 系统中是“/n”)
其实,按照中国人的习惯,以上翻译有些别扭,我觉得应该这样翻译才能更好的被人理解:
file.separator 文件目录(或者文件路径)分隔符(在 UNIX 系统中是“/”,windows中是“\”)
path.separator 环境变量路径分隔符(在 UNIX 系统中是“:”,windows中是“;”)
line.separator 文字换行分隔符(在 UNIX 系统中是“/n”)
至于为什么要说sun官方翻译的有些别扭呢?我给大家举一些例子大家讨论下:
比如我们想要JAVA表示一个下面的文件路径:
windows环境下:
G:\book\api-1.6-cn
linux(unix)环境下:
/home/book/api-1.6-cn
为了跨平台性我们会写出如下的代码:
File[] roots = File.listRoots();// 获取磁盘分区列表
  String osname = System.getProperty("os.name").toLowerCase();// 返回操作系统名称
  // 按sun官方翻译应使用下面的这句,其实得出结果是错的!
  // String tempPath="book"+System.getProperty("path.separator")+"api-1.6-cn";
  // 按照我说提出来的翻译,应使用下面的这句,结果正确!
  String tempPath = "book" + System.getProperty("file.separator")
    + "api-1.6-cn";
  if (osname.indexOf("windows") != -1) {// windows下路径表示方法:
   for (File file : roots) {
    if (file.getPath().indexOf("G:") != -1) {
     String path = file.getPath() + tempPath;
     System.out.println(path);
    }
   }
  } else if (osname.indexOf("linux") != -1) {// linux下路径表示方法:   
   for (File file : roots) {
    if (file.getPath().indexOf("/home") != -1) {
     String path = file.getPath() + tempPath;
     System.out.println(path);
    }
   }
  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

手机版|小黑屋|享码网 ( 京ICP备12003721号 )

GMT+8, 2024-3-29 02:36

Powered by Discuz! X3.5

Copyright © 2001-2021 Tencent Cloud.

快速回复 返回顶部 返回列表