FileInputStream fso1 = null;
FileInputStream fso2 = null;
fso1 = new FileInputStream("D:\\1.doc");
fso2 = new FileInputStream("D:\\1.doc");boolean ii;
ii = fso1.equals(fso2);String test = String.valueOf(ii);
fso1.close;
fso2.close;
System.out.println (test);
结果是false
顺便PS:提问时右边的Ajax用得不错,呵呵!

解决方案 »

  1.   

    这样的值当然是false
    FileInputStream中的equals方法是从Object类中继续下来的类Object中的写法是这样的:
    public boolean equals(Object obj) {
       return (this == obj);
    }
    你看它能相等吗 ~_~
      

  2.   

    本来嘛, 两个流, 就算是打开同一个文件, 可毕竟还是两个不同的流嘛...关于equals, 楼上已经说得很清楚了.
      

  3.   

    那这样说,同一个文件每次读出的流都不一样了?
    FileInputStream fso1 = null;fso1 = new FileInputStream("D:\\1.doc");String test = String.valueOf(fso.hashCode());
    fso1.close();
    System.out.println(test);
    每次刷新页面,得到的test也不一样,这也能说明每次刷新读出的stream都是不一样的。这是为什么?如果是字符串的话,肯定是一样的。
      

  4.   

    我明白了,每次都new了一个,所以每次的object都不一样了。我想实现判断文件是否修改过,我原先就想通过数据流stream得到hashcode来判断,看来不行呀,各位大虾有无好方法?
      

  5.   

    其实我找到一个方法,如下
    int r;String aa="";        
     while ((r = rf.read()) != -1)
     {
          aa = aa+String.valueOf(r);
     } 
    得到的aa的hashcode就可以判断出文件是否修改过了,但是效率有低,要把文件每个字节取出,哪位有好方法呀!!!
      

  6.   

    取文件的内容得到hashcode作为数字签名的内容,取修改时间作为数字签名不合适。我想得到的就是文件的内容(hash)摘要,作为数字签名。不知有没有人做过。
      

  7.   

    有没有方法能直接得到文件的hash摘要,而且文件没修改时得到的都相同,修改后hash会改变。我用自己的方法已经能实现,可是效率太低了,如果文件大了,页面很慢,客户肯定不会满意的。我想知道有没有更好的方法直接得到内容hash摘要。我接触java还不到半年,好的方法可能还不知道。大家共同学习进步!
      

  8.   

    你去试验一下
    在你的D:\下不要有1.DOC这个文件
    fso1 = new FileInputStream("D:\\1.doc");执行有有了一个1.DOC,你把这个删除掉
    fso2 = new FileInputStream("D:\\1.doc");执行后又多了个1.DOC
    发现问题了吗,两个不同的文件流创建同一个文件
      

  9.   

    楼上的说的是 FileOutputStream,不是FileInputStream,如果删除会报错的,说找不到文件。