我写了一个简单的客户端/服务器在Java中使用Java NIO Socketchannel传输文件。当我将简单的文本文件从Linux传输到Windows时,线路返回全部消失。我知道两个操作系统使用不同的字符编码,但我试图弄清楚在哪个过程中我会考虑这一点。新行字符丢失从Linux传输到Windows
当服务器发送文件时,它只是发送原始字节,由FileInputStream
读入。
我的客户端将通道中的字节读入ByteBuffer,然后从中获取字节数组。
FileOutputStream fos = new FileOutputStream(filepath);
fos.write(data); //data is my byte[]
fos.close();
:通过字节的每一个我收到更多来自渠道,寻找EOF,如果我不觉得,我把它放到一个文件时,该阵列
socketChannel.read(this.readBuffer);
我环路我知道这对某些人可能有一个明显的解决方案,但我并不太熟悉所涉及的所有概念。
你使用的FileInputStream任何理由代替的FileReader呢?从FileInputStream的文档:FileInputStream是用于读取诸如图像数据的原始字节流。为了读取字符流,请考虑使用FileReader。 – GoingTharn 2012-01-18 22:14:14
我问,因为FileReader会尊重/保留换行符。 (尽管距离使用java.io已经有8个多月了) – GoingTharn 2012-01-18 22:32:17