杰 & C++ & Python & DM

遇到java与crontab问题


  crontab命令是Unix/Linux中的一个常用命令,用于设置周期性被执行的指令。没有用过的可以查一下,在运行服务端程序时会经常用到。

  程序使用Java读取一个含有中文的文件,进行处理后,将结果写到一个结果文件中。在运行的程序时,出现了这样一个问题:在本地环境下,运行正确;但是当使用crontab定时执行时,得到的却是错误的结果。

  经过一定的调研发现原来是对crontab的机制没有弄明白导致的。crontab运行程序时,会使用它自己的环境变量,这个环境变量与你本地的环境变量可能会不同。比如,在你本地情况下,环境变量的语言为en_US.UTF-8,而在crontab中,环境变量可能是zh_CN.GBK,这样会导致读写文件时——尤其是读写中文文件时内容编码错误,进而导致结果出错。

  所以在使用Java读写文件时,一定要指定编码格式,而不是使用环境变量的格式。例如下面的语句用于读取utf-8格式的文件

String encodeType = "utf-8";
File in_file 
= new File("test.txt");
BufferedReader reader 
= new BufferedReader(new InputStreamReader(new FileInputStream(in_file), encodeType));
  
  网上也有关于修改crontab环境变量的方法,但是我不建议使用,因为一个系统可能是很多人共用的,修改crontab环境变量可能会引起他人程序的问题,最好修改自己的程序,保证它不依赖具体的环境变量。



posted on 2012-05-14 15:20 jaysoon 阅读(805) 评论(0)  编辑 收藏 引用 所属分类: Java


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

收藏夹

C++

搜索

最新评论

阅读排行榜

评论排行榜