2013-05-21 2 views
0

Я добавляю и транслирую кучу файлов, и я хочу обрезать строку заголовка после первого файла. В окнах следующий код java добавляет пустую строку, и я вижу искаженные символы в блокноте ++. Любые исправления/предложения? Спасибо.Чтение символа новой строки в java

private int updateHeader(byte[] buffer) throws UnsupportedEncodingException { 
     if (first) { 
     return buffer.length; 
     } 
     String s, s2; 
     s = new String(buffer, "UTF-8"); 
     int k = s.indexOf(System.getProperty("line.separator"), 0); 
     s2 = s.substring(k + 1); 
     byte[] buffer2 = s2.getBytes("UTF-8"); 
     System.arraycopy(buffer2, 0, buffer, 0, buffer2.length); 
     return buffer2.length; 
    } 

ответ

1

Я думаю, что вы должны сделать что-то вроде:

... 
String separator = System.getProperty("line.separator"); 
int k = s.indexOf(separator, 0); 
s2 = s.substring(k + separator.length()); 
s2 = s2.trim(); 
... 

строки Windows, разделители более 1 символов длиной (CR + LF) по сравнению с Unix, который LF на основе this. Кроме того, это может быть сложно, если вы перемещаете файлы на разных платформах.

EDIT Я не уверен, что вы видите, так как у меня нет файлов, но вы можете попробовать также подрезать подстроку, если увидите фанки. Вы уверены, что файлы имеют правильную кодировку и что вы их правильно читаете?

+0

Это лучший код, и он удаляет пустую строку, но я все еще вижу искаженные символы в блокноте ++, и первая строка из «s2» появляется с отступом в сгенерированном файле, спасибо – Vasukh

+0

Вы пытаетесь скопировать первую строку или вторую ? Кажется, что вы удаляете до новой строки и включаете ее, а затем копируете оставшиеся в буфер. Вы хотите сохранить только первую часть? –

+0

Я хочу отбросить первую строку (так как она содержит заголовок) и скопировать только данные (из строки 2). Проблема в том, что строка 2 (новая строка 1) появляется с отступом в файле – Vasukh

Смежные вопросы