Копирование двоичного файла изменяет символ новой строки на стандарт окна ... Джава - PullRequest
0 голосов
/ 26 сентября 2010

По какой-то причине этот код заменяет любые символы '\ n' из входных данных и заменяет их на '\ n \ r' в новом выходном файле.Я ссылаюсь на пару веб-сайтов, и до сих пор не понял это .. У кого-нибудь есть идея?Большое спасибо!

Socket connectionSocket = sData.accept();
InputStream inputStream = connectionSocket.getInputStream();
BufferedInputStream inputBufferedStream = new BufferedInputStream(inputStream);
FileOutputStream outputStream = new FileOutputStream("/home/greg/1");


     byte[] buffer = new byte[1024];
     long count = 0;
     int n = 0;
     while ((n = inputBufferedStream.read(buffer))>=0) {
         outputStream.write(buffer, 0, n);
         count += n;
     }
    outputStream.close();
  }

1 Ответ

1 голос
/ 26 сентября 2010

Конкретный код этого не делает. Скорее всего, эти \r\n просто уже были во входном источнике.

Это может произойти, только когда вы читаете его, используя, например, BufferedReader#readLine(), который съедает символы новой строки, и записывает его, используя PrintWriter#println(), который добавляет символы новой строки платформы по умолчанию. Вероятно, другая сторона делает это? В конце концов, Reader / Writer не следует использовать для двоичных данных. Это может привести к неправильной работе. Для этого используйте InputStream / OutputStream.

...