关于IO中的public int read(char[ ] cbuf)方法

yiqiu2324 2013-04-30 11:18:10
首先看代码:
package filereader;
import java.io.FileReader;
import java.io.IOException;
import static java.lang.System.out;
class FileReaderDemo2{
public static void main(String[] args)throws IOException{
FileReader fr = new FileReader("c:\\test.txt");//文件内容a
char[] buf = new char[3];//定义数组长度为3

int num=fr.read(buf);
out.println("num="+num+"..."+new String(buf));

num=fr.read(buf);
out.println("num="+num+"..."+new String(buf));

num=fr.read(buf);
out.println("num="+num+"..."+new String(buf));
out.println("over");
}
}

但输出结果却是:(我把源文件和test.txt均放在了c:\下)

竟然输出了3个a??我很郁闷,我在反复检查c:\test.txt内容->确定为一个a
我在考虑是不是因为我的操作系统缘故(windows 7 64bit 旗舰版)
于是我把java源文件和test.txt拷到XP系统下测试:

一个a正常.
我在用U盘把JDK和源文件拷到同学机器上运行,3个a…..
这是为什么?拜托了.
...全文
244 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiqiu2324 2013-05-02
  • 打赏
  • 举报
回复
把输出结果输出到文件中一切正常...... num=1...a num=-1...a num=-1...a over 然后再输出到控制台- -又是3个a..,参照上面解释
yiqiu2324 2013-05-02
  • 打赏
  • 举报
回复
关于这个找到这个,buf这个数组buf[1],buf[2]打印的均是ASCII码为0字符就是'\0'空字符 维基百科中关于空字符: http://zh.wikipedia.org/wiki/%E7%A9%BA%E5%AD%97%E7%AC%A6 这个字符原来的意思类似NOP指令,当送到列表机或终端机时,设备不需作任何的动作(不过有些设备会错误的打印或显示一个空白)。
失落夏天 2013-05-01
  • 打赏
  • 举报
回复
抱歉,刚才没看清问的。 首先这肯定不是系统计算的问题。 楼主可以尝试在32位和64位或者xp下使用exclipse编译。看结果。 我这边32位的win结果是 num=1...a(后面还有分隔符) num=-1...a(后面还有分隔符) 我觉得有可能是显示的问题。 楼主可以尝试一下吧这结果打印到一份文件里面看看。
lcf 2013-05-01
  • 打赏
  • 举报
回复
就是没win7。。不过这个肯定还是操作系统的关系啦。new String(buf, 0, num)才是正解
lcf 2013-05-01
  • 打赏
  • 举报
回复
vbox ubuntu x64 12.04 JVM7表示只有1个a
lcf 2013-05-01
  • 打赏
  • 举报
回复
win8 x64 JVM6 表示只有1个a
失落夏天 2013-05-01
  • 打赏
  • 举报
回复
fr.read(buf); 这里就已经把东西全读出来了。 后面的当然读不到了。。、
lcf 2013-05-01
  • 打赏
  • 举报
回复
mac用户表示只有1个a
fei1710 2013-05-01
  • 打赏
  • 举报
回复
不会这么神奇吧
tzguo1314 2013-05-01
  • 打赏
  • 举报
回复
没有刷出数据,out.flush
shine333 2013-04-30
  • 打赏
  • 举报
回复
至于为什么相同程序出现两个结果(当然这首先是程序写的有问题),我还要再看看
shine333 2013-04-30
  • 打赏
  • 举报
回复
read返回值代表读入缓存的长度,-1就代表什么都没到 所以,如果-1,直接停止 如果非负数,new String(buf, 0, num);
源码链接: https://pan.quark.cn/s/a4b39357ea24 在C语言编程环境,多项式求和是一项常见的编程实践,它融合了数学理论、算法设计以及C语言的基础运用。此类程序可能包含对用户输入的多项式表达式进行解析,进而计算各项的总和。接下来将对这一主题进行深入阐述。 多项式在数学领域是一个基础性概念,它由常数、变量及指数通过线性方式组合而成,例如表达式`3x^2 + 2x - 1`。在C语言环境下,我们可以借助数组来表示多项式的各项系数,例如通过定义一个整型数组`int coefficients[] = {3, 2, -1}`来保存表达式`3x^2 + 2x - 1`的系数值。 1. **多项式解析**: 解析多项式的过程通常需要从用户处获取输入数据,如表达式`3x^2 + 2x - 1`。在C语言,可以利用`scanf()`函数来接收用户的输入。解析流程涉及到识别每个项的系数、变量及指数,这可能需要运用到字符串处理函数,例如使用`strtok()`函数来分割字符串,以及通过`atoi()`或`atof()`函数将字符串转换为数值类型。 2. **数据结构构建**: 为了高效地处理多项式,可以设计一个结构体用以存储每一项的系数和指数信息。例如: ```c typedef struct { int coefficient; int exponent; } Term; ``` 随后,可以选用链表或数组来存储这些结构体实例,以此来完整表示一个多项式。 3. **求和运算**: 求和操作可能包含两个阶段:(1) 对相同指数的项进行系数相加,(2) 将计算结果整合至最终的多项式表达式。在处理同次幂项时,需要遍历两个多项式,识别出具有相同指数的项...

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧