Я пытаюсь прочитать двоичный файл на Java, используя метод bufferedReader. Я написал этот двоичный файл, используя кодировку «UTF-8». Код для записи в бинарный файл:
byte[] inMsgBin=null;
try {
inMsgBin = String.valueOf(cypherText).getBytes("UTF-8");
//System.out.println("CIPHER TEXT:FULL:BINARY WRITE: "+inMsgBin);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(EncDecApp.class.getName()).log(Level.SEVERE, null, ex);
}
try (FileOutputStream out = new FileOutputStream(fileName+ String.valueOf(new SimpleDateFormat("yyyyMMddhhmm").format(new Date()))+ ".encmsg")) {
out.write(inMsgBin);
out.close();
} catch (IOException ex) {
Logger.getLogger(EncDecApp.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("cypherText charCount="+cypherText.length());
Здесь 'cypherText' - это строка с некоторым содержимым. Общее количество символов, записанных в файле, равно 19. Также после записи, когда я открываю двоичный файл в Notepad ++, он показывает некоторые символы. Всего при выборе всего содержимого файла считается 19 символов.
Теперь, когда я читаю тот же файл с помощью BufferedReader, используя следующие строки кода:
try
{
DecMessage obj2= new DecMessage();
StringBuilder cipherMsg=new StringBuilder();
try (BufferedReader in = new BufferedReader(new FileReader(filePath))) {
String tempLine="";
fileSelect=true;
while ((tempLine=in.readLine()) != null) {
cipherMsg.append(tempLine);
}
}
System.out.println("FROM FILE: charCount= "+cipherMsg.length());
Здесь общее количество прочитанных символов (хранящихся в 'charCount') равно 17 вместо 19.
Как я могу правильно прочитать все символы файла?
String a="10101001"; cypherText+=(char)obj1.asc(a);
. Функцияasc
работает отлично, поэтому вам не нужно беспокоиться о ее работе и возвращенииInteger
. Поскольку максимальное значение, предлагаемое строкойa
, может быть только 11111111, что равно 2 ^ 8-1, которое отлично хранится в переменнойInteger
, так что это также не будет проблемой. 22.04.2014String a
выше, является просто примером. 22.04.2014ia@ m©Ù6ë<«9K()il
. Здесь вы можете видеть вторую строку... она заполнена каким-то символом, и если подсчитать все, то получится 19 символов. 22.04.2014\n
, поэтому я думаю, что он пропускает эти две строки. Можете ли вы предложить решение для этого? 22.04.2014