Skip to content

跨平台Java编程小记

早就听说Java的平台覆盖面十分广泛,于是我兴高采烈的写了个Java程序,在Mac上完美运行之后,想着这程序在别的平台上肯定也是十分给力的。 于是我哼着小曲儿,打开Windows,打开新程序,一运行,瞬间被打脸=。=!

 

经过研究,不同平台间的很多参数貌似都不太一样,所以这篇文章就来记录一下我发现的比较重要的点:

1. 文件路径分隔符:

在Linux和Mac底下,一个普通文件的路径是这样子的:

但是呢,大家知道Windows就是喜欢做什么都跟上面两家对着干(其实这个case下并不是,这个符号源自于DOS),所以在Windows底下,一个文件的路径就变成了:

所以在写Java跨平台程序的时候,这在Mac下用的爽爽的路径,在Windows下就找不着了。以下是两种解决方法:

I. 繁琐无聊的方法:

这种方法通过系统名字来确认当前操作的是啥系统,从而来更改路径分隔符; 这种方法相当繁琐(相对于第二种),但是同时也点了一个没什么卵用的技能树:如何获取操作系统名字

II. 简单暴力方法:

如果你想要字符,可以这么弄:

一行搞定,就是这么简单暴力!

 

2. 文件换行符

由于某些原因,Mac, Linux, Windows 下文件中的换行符是不一样的,所以导致在Mac下用\r写的文件在Windows下就都变成一行了(Windows: \r你谁,不认识你), 以下是不同平台下的换行符:

Linux : \n

Mac OS: \r

Windows: \r\n

所以换行符的差别给跨平台Java程序开发带来了不便,以下是几种解决方案:

I. 如果你只是想要打印到Console:

直接用:

System.out.println(“bla bla bla”);

就能搞定,可以完全无视这个问题;

II. 如果不介意多写点,格式化一下字符串(String):

用printf 或者 String.format, 在句尾加上“ %n ” 就能自动输出正在使用的操作系统的换行符

III.如果想和换行符正面交锋:

System.getProperty(“line.separator”);

 

目前想到这么多,以后发现别的再补充

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.