我在些一个局域网传输文件夹的程序,在连续传送文件时,发送端连续写入文件,接受端接收时却无法鉴别各个文件,将所有数据写入了一个文件,请各位指教。接收端代码:
private void output(BufferedReader br,BufferedInputStream bis,Socket s)
{
  String readStr;
  byte[] buf = new byte[1024*10];
  int len;
  try
  {
    while(true)
    {
      readStr=br.readLine();
      System.out.println(readStr);
      String isFile=readStr.substring(0,1);
      file=readStr.substring(1);
      if(isFile.equals("1"))
      {  
FileOutputStream fos = new FileOutputStream("E:\\"+file);
BufferedOutputStream bos=new BufferedOutputStream(fos,1024*10);
System.out.println("creating "+file+"......");
while((len=bis.read(buf,0,1024*10))!=-1)
{
   bos.write(buf,0,len);
   bos.flush();
 }
 fos.close();
 bis.close();
 System.out.println("creating "+file+" completed!");
      }
      else if(isFile.equals("0"))
      {
 File f=new File("E:\\"+file);
 System.out.println("creating directory....."+f);
 if(f.mkdir())
 System.out.println("creating completed.....");
      }
      else
 return;
     }   
   }
   catch(IOException e)
   {
     e.printStackTrace();
    }   
  }发送端代码:
private void sender(File file,BufferedWriter bw,BufferedOutputStream bos)
  {
  if(file.isFile())
      {
       sendFile(file,bw,bos);
      }
      else
      {
       sendDirec(file,bw);
       File[] fileList=file.listFiles();
       for(int i=0;i<fileList.length;i++)
       {
   if(fileList[i].isFile())
   {
   sendFile(fileList[i],bw,bos);
   }
   else if(i<fileList.length)
   {
   sender(fileList[i],bw,bos);
   }
   else
   {
   return;
   }   
       }
      } 
  }
  
  private void sendFile(File file,BufferedWriter bw,BufferedOutputStream bos)
  {
       System.out.println("filename: "+file);
  String path=file.getPath();
  String realName=path.substring(primaryPath.length());
  BufferedInputStream bis=null;   
  byte[] fileBuf=new byte[1024*10];
  int len;
  try
  {
  FileInputStream fis = new FileInputStream(file);
  bis=new BufferedInputStream(fis,1024*10);
  bw.write("1"+realName);
  bw.newLine();
  bw.flush();
  while((len=bis.read(fileBuf))!= -1)
  {
  bos.write(fileBuf,0,len);
  bos.flush();
  }
  bis.close();
  fis.close();
  }
  catch(FileNotFoundException ex)
  {
  System.out.println("创建文件流失败!");
  ex.printStackTrace();
  }   
  catch(Exception e)
  {
  System.out.println("写入文件出错!");
  e.printStackTrace();
  }     
  }
  private void sendDirec(File file,BufferedWriter bw)
  {
  System.out.println("filename: "+file);
  String direcName=file.getPath();
  String realName=direcName.substring(primaryPath.length());
  try
  {
  bw.write("0"+realName);
  bw.newLine();
  bw.flush();
  }
  catch(FileNotFoundException ex)
  {
  System.out.println("创建文件流失败!");
  ex.printStackTrace();
  }   
  catch(Exception e)
  {
  System.out.println("写入文件夹出错!");
  e.printStackTrace();
  }
  }