Windows / Linux下,文件读写

     毋庸置疑,java本身是跨平台的。但是很多时候由于长期在windows上开发,养成了不好的编程习惯。因为操作系统的不同,会在很多细小的地方产生bug,深受其害。

     最恶心的问题就是,在windows平台,文件都是以“\”分割,例如:"D:\test\....",而在Linux中,文件都是以“/”分割的,例如:"home/admin/...."。如果开发时候,对文件分割符写死的话,必然只能兼容一种操作系统。要想同时兼容多种操作系统,就不能写死。写法应该用File.separator分隔符连接,用StringBuffer连接。例如:

 

StringBuffer sb = new StringBuffer();
sb.append("home").append(File.separator).append("admin");
File file = new File(sb.toString());

     又有一个新问题,如果程序会把某个文件路径持久化到数据库,那么数据库中存储的char必然是某种操作系统的文件路径格式,

在数据库中必然是写死的,不同的操作系统读取出来进行文件操作,必然再次异常。这样,只能写一个转化方法解决这问题:

 

public static String parseFilePath(String fileName,String filePath){
      StringBuffer filePath_unit = new StringBuffer();
      String path = filePath_unit.append(filePath).append(File.separator).
            append(fileName).toString();
      return path.replace("/", File.separator).replace("\\",
            File.separator);
}

    深受其害啊~~特撰文讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以读写Ext2,以Ext2方式挂载Ext3文件系统(不支持Ext3日志),不支持中文! It provides Windows NT4.0/2000/XP/2003/Vista/2008 with full access to Linux Ext2 volumes (read access andwrite access). This may be useful if you have installed both Windows and Linux as a dual boot environment on your computer. What features are supported? Complete reading and writing access to files and directories of volumes with theExt2 orExt3 file system. Supports features which are specific to the I/O-system of Windows: Byte Range Locks, Directory Notfication (so the Explorer updates the view of a directory on changes within that directory), Oplocks (so SMB clients are able to cache the content of files). Allows Windows to run with paging files on Ext2 volumes. UTF-8 encoded file names are supported. The driver treats files with file names that start with a dot "." character ashidden. Supports GPT disks if the Windows version used also does. Supports use of the Windows mountvol utility to create or delete drive letters for Ext2 volumes (except on Windows NT 4.0). See also section"Can drive letters also be configured from scripts?". What features are *not* supported? Inodes that are larger than 128 bytes are not supported. Access rights are not maintained. All users can access all the directories and files of an Ext2 volume. If a new file or directory is created, it inherits all the permissions, the GID and the UID from the directory where it has been created. There is one exception to this rule: a file (but not a directory) the driver has created always has cleared "x" permissions, it inherits the "r" and the "w" permissions only. See also section"What limitations arise from not maintaining access rights?". The driver does not allow accessing special files at Ext2 volumes, the access will be always denied. (Special files are sockets, soft links, block devices, character devices and pipes.) Alternate 8.3-DOS names are not supported (just because there is no place to store them in an Ext2 file system). This can prevent legacy DOS applications, executed by the NTVDM of Windows, from accessing some files or directories. Currently the driver does not implement defragging support. So defragmentation applications will neither show fragmentation information nor defragment any Ext2 volume. This software does not achieve booting a Windows operating system from an Ext2 volume. LVM volumes are not supported, so it is not possible to access them.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值