我希望讲一个文件的内容使用datagramSocket发送,我使用BufferedReader读取内容,将内容保存到String中,并自动处理换行,但是发送到对方显示,回车换行没有显示,显示的是小黑方块,请问怎么解决?谢谢了啊
BufferedReader br = new BufferedReader(new FileReader(file));
     String line,content="";
     while((line = br.readLine())!=null){
      content = content+line+"\r\n";    //每次读取一个数据然后将自动添加换行
     }

解决方案 »

  1.   

    System.getProperty("line.separator"); 
      

  2.   

    不行啊
    这个是我写的用来发送内容的datagramSocketpublic void sendMessage(InetAddress host,int port,String message) throws IOException{
    byte[] buffer = message.getBytes();
    DatagramPacket datagram = new DatagramPacket(buffer,buffer.length,host,port);
    System.out.println("send");
    System.out.println(new String(buffer));
    this.send(datagram);
    }

    public String receiverMessage() throws IOException{
    byte[] buffer = new byte[MAX_LEN];
    DatagramPacket datagram = new DatagramPacket(buffer,buffer.length);
    this.receive(datagram);
    System.out.println("receive");
    System.out.println(new String(buffer));
    return new String(buffer);
    }这个是读取的BufferedReader
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line;
    while((line = br.readLine())!=null){
    this.content = content+line+System.getProperty("line.separator");
    }
    另一端 String message = socket.receiverMessage();
    System.out.println(message);
    显示的都有问题
    只显示一部分
    后面的没有了
      

  3.   

    你把文件原样传过,用 BufferedInputStream,不用 BufferedReader
      

  4.   

    操作系统的换行符有差异
    尽量使用JDK封装的
      

  5.   

    楼主,你这样编程,只能传文本文件了。要是图片什么的,仍然无法传输啊。
    Reader和Writer是将IO数据转换成字符进行处理的。
    其次,一个UDP报文,发送一个文件的所有内容,会有一个显著的缺点,
    就是,大文件无法进行传输。推荐楼主,不要使用Reader和Writer类,要针对二进制数据进行传输,
    就不会有字符乱码的问题了,即使有也不是传输过程中造成的。针对一个文件一个包(微小文件)尝试修改如下:
        public void sendMessage(InetAddress host,int port,byte [] message) throws IOException{
            DatagramPacket datagram = new DatagramPacket(message,message.length,host,port);
            this.send(datagram);
        }
        
        public byte [] receiverMessage() throws IOException{
            byte[] buffer = new byte[MAX_LEN];
            DatagramPacket datagram = new DatagramPacket(buffer,buffer.length);
            this.receive(datagram);
            return datagram.getData();
        }
    文件的读取和写入,可以考虑://从文件中读取发送数据
    File inFile = new File("in_file.txt");
    byte [] message = new byte[(int)inFile.length()];
    new FileInputStream(file).read(message);
    // TODO 后面可以调用发送函数进行发送//将收到的数据写入文件
    byte [] message = receiverMessage();
    new FileOutputStream("out_file.txt").write(message);以上代码仅供参考