关于在真机上字符流(InputStreamReader)不能设置字符集的问题

来源:互联网 发布:刘诗诗 香奈儿 知乎 编辑:程序博客网 时间:2024/05/16 17:50

这是我在实际项目中,发现的一个问题。

在真机上字符流设置字符集与这个字符流的mark冲突,也就是说要设置字符集就不能mark,要mark就不能设置字符集,否则在手机上就报“无法处理的异常,是否关闭”;

我也不知道为什么,但是我在N73上调试确实有这样的问题。

 

之后在在其他机器上试一试 在来更新

InputStreamReader is=new InputStreamReader(fc.openInputStream(),"GBK");
is.mark((int) fc.fileSize());//
mark和字符集不能同时用 

============跟上面的问题有关==========

 

ss是一个StringBuffer类型的变量,保存内容并显示用。

这段代码是用来判断文件编码格式,并设置相应的字符集。

上面说过用InputStreamReader设置字符集时不能适用mark,但是用InputStream mark获得文件的bom 在reset就没有问题。

============也是很奇怪的问题==========

新木 14:44:15
对了 告诉您我发现的一个现象
如果读取一个流到末位就是返回了-1
这是在reset没有用读不出数据返回的还是-1
除非mark整个流的长度
 
李老师 14:45:31
没听太明白,呵呵
新木 14:45:51
我读取一个流
 
新木 14:46:04
已经读完了 已经返回-1这个值了
 
新木 14:46:19
如果我还想返回去重新读
 
新木 14:46:37
不是可以调用reset吗
 
新木 14:46:57
游标就返回到流的头部或者mark标记的位置
 
李老师 14:47:03

新木 14:47:54
事实上 是如果读完了流(-1)
在reste 读出来的还是-1
 
新木 14:48:29
也就是说 这种情况下 reste就失效了
 
李老师 14:49:59
这个我倒是没发现,我试试
新木 14:50:11
但是如果mark了整个文件的 就可以实现
读到末位(-1)
在重新返回流里读取数据的效果

新木 14:50:17
恩 
 
李老师 14:56:56

李老师 14:57:05
你运行下这段代码看看
李老师 14:57:08
和你说的不一样
新木 14:59:50
您这段代码确实可以
我看看我那里出现的情况
 
李老师 15:00:19
恩,你仔细检查下代码

新木 15:18:08
对于普通的流没问题 但是对于文件流是有这个问题的
 
新木 15:18:26
  
 
新木 15:18:32
您运行一下试试
 
新木 15:19:00
把这个文件放到wtk的root1目录下
 
木子 15:19:30
文件“l1.txt”(0.4KB)已经发送完毕。
新木 15:19:37
C:/Documents and Settings/Administrator/j2mewtk/2.5.2/appdb/DefaultColorPhone/filesystem/root1
这是目录
 
李老师 15:19:49
好,我试一下
李老师 15:24:07
文件流确实不行
李老师 15:24:23
我在j2se下测试也不行

原创粉丝点击