public class ContentSplitter {
public static int defaultCharactersPerLine = 50;
public static int defaultLines = 3;
public static String split(String content) {
return ContentSplitter.split(content, 0, 0);
}
public static String split(String content, int charactersPerLine, int lines) {
if (charactersPerLine == 0)
charactersPerLine = defaultCharactersPerLine;
if (lines == 0)
lines = defaultLines;
StringBuffer sb = new StringBuffer();
String contentLeft = content;
for (int l = 1; l <= lines; l++) {
if (contentLeft.length() < charactersPerLine) {
sb.append(contentLeft);
break;
} else {
if (l == lines) {// if current line is the last given line
int si = contentLeft.substring(0, charactersPerLine - 1).lastIndexOf(' ');
sb.append(contentLeft.subSequence(0, si));
} else {
if (contentLeft.charAt(charactersPerLine + 1) == ' ') {
sb.append(contentLeft.substring(0,charactersPerLine - 1));
contentLeft = contentLeft.substring(charactersPerLine - 1);
} else {
int si = contentLeft.substring(0, charactersPerLine - 1)
.lastIndexOf(' ');
sb.append(contentLeft.subSequence(0, si));
contentLeft = contentLeft.substring(si);
}
}
}
}
String brief = sb.toString();
//System.out.println("brief:"+brief);
return brief;
}
}
最近在做音乐歌词读写的项目的时候,遇到一个很烦的问题,我们在读取保存在本地的歌词的时候出现乱码,在有的手机上面没有这个问题,在有的手机上就有这个问题。当时是我负责这块,郁闷了半天,专门为这个问题,查了各个手机的api支持的字符集,可是最后没有很好的解决这个问题,先是直接读到一个byte[]里面再new (byte[],"UTF-8")乱码问题大大的有,后来在读出的时候也是将流转化为DataInputStream,再去readUTF(),还是乱码。
上面是小插曲,其实解决这样子的问题很简单,只要控制写和读的一致性就没有问题了。
比如:
写操作
public synchronized void saveLyricFile(String data, String name) {
if (data == null || data.length() == 0) {
return;
}
OutputStream os = null;
DataOutputStream dos = null;
FileConnection fc = null;
try {
fc = (FileConnection) Connector.open(
"file:///" + musicSavePath+ name);
if (fc.exists()) {
//存在就不保存了
fc.close();
fc = null;
return;
}
fc.create();
os = fc.openOutputStream();
dos = new DataOutputStream(os);
dos.writeUTF(data);
dos.close();
os.close();
fc.close();
fc = null;
} catch (IOException ex) {
try {
fc.close();
dos.close();
os.close();
fc.close();
fc = null;
} catch (IOException ex1) {
ex1.printStackTrace();
}
ex.printStackTrace();
} finally {
try {
dos.close();
os.close();
fc.close();
fc = null;
} catch (IOException ex1) {
ex1.printStackTrace();
}
}
}
在读保存的文件的时候就可以直接
DataInputStream dis = new DataInputStream(is);
String lrcText = dis.readUTF();
这样子就没有什么乱码问题了。
这两天帮同学看个程序,里面用到log4j记录日志(之前公司开发程序都是用自己开发的日志包,只是按指定格式写就OK了),报错 log4j:WARN No appenders could be found 。都说是开源的东西介绍的比较多,但是出错之后查了一个多小时不得要领,这错误在网上搜搜各大论坛都有但是说的语焉不详,没办法去log4j官方网站apache看了介绍才明白是则么回事。
log4j配置文件写好之后,默认的存放的路径是工程.class文件路径的根目录(通常情况.class存放在/webroot/WEB-INF/class之下,则也应该把这个*.properties放到该目录,这时就不会报刚才提示的错误了呵呵。
仔细看了介绍之后终于明白,可以自己修改存放路径。在Java代码中通过PropertyConfigurator.configure(String configFileName) configFileName包含文件名和存放路径。如果配置文件是通过XML格式,DOMConfigurator.configure( String fileName ) 搞定!
等那天apache官方也来个中文版,估计大家用开源的决心会更加强大吧。不过apache这个网站挺有用的,倒不是说上面的开源插件,自己英文水平提高apache居功甚伟啊,想去理解只能死扣英文了,无形之中潜移默化。Thank you apache。