楼主想开发版本控制软件吗?
牛!
祝你早日做出中国的CVS

解决方案 »

  1.   

    发送接收端都有以下几个  
     private InputStream Is;
      private OutputStream Os;
      private DataInputStream DIS;
      private PrintStream PS;先是从输入流中读取字符串
    readbuf = DIS.readLine();
    判断非空之后
    filename=readbuf;
    但是不明白为什么名字会是乱码?还有就是传输0字节的时候
    我在发送端的代码是//Debug使用调试的
      

  2.   

    1)当读0字节的文件时候,出现异常。
      读之前先判断一下是否为 0 呀
    2)当文件名是中文时候,文件名也异常。
      转换一下编码.
    new String(原str.getBytes(),"gb2312")
    几种编码自己试试, ------------------------------------------------------
               我们还年轻牛奶会有的奶牛也会有的 
                 可天天在 csdn 混这些会有吗 ??
      

  3.   

    1)当读0字节的文件时候,出现异常。
      读之前先判断一下是否为 0 呀
    2)当文件名是中文时候,文件名也异常。
      转换一下编码.
    new String(原str.getBytes(),"gb2312")
    几种编码自己试试, ------------------------------------------------------
               我们还年轻牛奶会有的奶牛也会有的 
                 可天天在 csdn 混这些会有吗 ??
      

  4.   


      try
              {
                FileInputStream fis = new FileInputStream(directory + "//" + list[i]);
                Debug("begin Send file", false);//Debug使用调试的 
                while (true)
                {
                  byte[] buf = new byte[4096];
                  int readln = fis.read(buf, 0, 4096);
                  if (readln < 4096)
                  {
                    if (readln == -1)//这个是针对0字节文件的处理。
                    {
                      readln = 0;
                    }
                    Os.write(buf, 0, readln);//不知道这样对0字节文件有什么后果
                    Debug("Send file buffer over", false);//Debug使用调试的 
                    break;
                  }
                  Os.write(buf, 0, 4096);
                }
                fis.close();//写完一个文件就close()
              }在接收端,我的做法是
      while (true)
            {
               //Debug("hello", false);
              byte[] readbuffer = new byte[4096];
              try
              {
                readlen = Is.read(readbuffer);
                Debug("hello2" + Integer.toString(readlen), false);//Debug使用调试的 
              }
              catch (Exception e)
              {
                //  Debug("error", false);
                try
                {
                  DIS.close(); //关闭数据输入流
                  PS.close(); //关闭数据输出流
                  Is.close(); //关闭输入流
                  Os.close(); //关闭输出流
                  sock.close(); //关闭socket
                  fos.close();
                }
                catch (Exception ex1)
                {
                  Debug(ex1.toString(), false);//Debug使用调试的 
                }
                return;
              }
              if (readlen == 0)
              {
                Debug("recv null", false);//Debug使用调试的 
                PS.println("GETFILESUCC");
                Debug("send command succ", false);//Debug使用调试的 
                /*try
                               {
                  DIS.close(); //关闭数据输入流
                  PS.close(); //关闭数据输出流
                  Is.close(); //关闭输入流
                  Os.close(); //关闭输出流
                  sock.close(); //关闭socket
                  fos.close();
                               }
                               catch (Exception ex1)
                               {
                               }*/
                try
                {
                  fos.close();
                }
                catch (Exception ex1)
                {
                }            continue;
             
              }
              try
              {
                fos.write(readbuffer, 0, readlen);
                if (readlen < 4096)
                {
                  /* fos.close();
                   DIS.close(); //关闭数据输入流
                   PS.close(); //关闭数据输出流
                   Is.close(); //关闭输入流
                   Os.close(); //关闭输出流
                   sock.close(); //关闭socket
                   fos.close();*/
                  PS.println("GETFILESUCC");
                  fos.close();
                  break;            }
              }
              catch (Exception ex2)
              {
                try
                {
                  DIS.close(); //关闭数据输入流
                  PS.close(); //关闭数据输出流
                  Is.close(); //关闭输入流
                  Os.close(); //关闭输出流
                  sock.close(); //关闭socket
                  fos.close();
                }
                catch (Exception ex1)
                {
                }
                return;
              }
            }
      

  5.   

    贴出自己的烂代码,各位赏点脸,看看,指出错误,
    敬礼了。
    顺便对pleonheart说声,
    我不是做那个东西,
    我做的是一个很简单的东东,
    是项目里必须的。
    我还是学生,呵呵,不过快毕业了。
    很多东西得向大g大j们学习。
      

  6.   

    按照这个语句
    filename=new String(readbuf.getBytes(),"gb2312");
    得到filename是?????.txt(应该是 “修改密码.txt”)
    呵呵接下来的
     fos = new FileOutputStream(FilePath + "\\" + filename);
    自然的出错。还请高手指点迷津
      

  7.   

    发送端循环部分的代码可作如下简化:
    byte[] buf = new byte[4096];
    int bytes = 0;
    while((bytes = fis.read(buf)) != -1)
        Os.write(buf, 0, bytes);接收端循环部分的代码可作如下简化:
    byte[] buf = new byte[4096];
    int bytes = 0;
    while((bytes = Is.read(buf)) != -1)
        fos.write(buf, 0, bytes);