powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема из конвертированием
2 сообщений из 2, страница 1 из 1
Проблема из конвертированием
    #38298978
botasa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть текст, понятный человеку, в файле. Из файла я считываю данные и записываю и БД в поле типа Blob.
знаю имена переменных кривые до ужаса, по пальцах надо бить лопатой, но это только промежуточный код и не хочу париться над именами.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
		
                InputStream q = new FileInputStream(new File("123.txt"));
		int i;
		StringBuilder s = new StringBuilder();
		while((i = q.read()) != -1)
		{
			s.append(i);
		}
		
		System.out.println(s);



Есть база данных, там поле типа Blob. Я с помощью JDBC вытаскиваю данные, которые туда и записал, туда и обратно число байтов одинаковое.

Хочу дальше преобразовать данные из байтов в символы, и записать это все в строку. Это у меня не получается почему то =(
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
		String ss = "";  
		InputStream inStream = b1.getBinaryStream();  
		InputStreamReader inStreamReader = new InputStreamReader(inStream);  
		BufferedReader reader = new BufferedReader(inStreamReader );  
		StringBuffer buf = new StringBuffer();  
		while((ss = reader.readLine()) != null){  
		buf.append(s);  
		}  
		
		String qwe = new String(buf);
		byte [] aq = qwe.getBytes();
		
		InputStream inArray = new ByteArrayInputStream(aq);
		while (true) {
            int oneByte = inArray.read();
            if (oneByte != -1) {
                System.out.print((char) oneByte);
            } else {
                System.out.print("\n" + "end");
                break;
            }
        }



Когда у меня есть InputStream inArray = new ByteArrayInputStream(new byte [] (65, 66, 67, 68, 69)); РАБОТАЕТ ХОРОШО
Но кода у меня InputStream inArray = new ByteArrayInputStream(aq); где aq это набор байтов, оно не работает
...
Рейтинг: 0 / 0
Проблема из конвертированием
    #38299345
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
botasa111,

Вы разберитесь, что у вас там байты и в какой момент берутся символы. В первом фрагменте содержимое файла теряется безвозвратно. Вас вывод не смущает? Строка "22222" может быть как {22, 222}, так и {222, 22}. Во втором фрагменте вы зачем-то вместо чтения байтовых данных читаете их как строку (действуют кодировки), затем преобразуете в байты. Почему бы сразу не читать байты?

Основных вариантов сделать из байтов строку - два. Либо считать все байты и вызвать конструктор String, передав нужную кодировку. Либо читать байты reader'ом и собирать символы в StringBuilder. Преобразование байты->строка->байты может быть неоднозначным и все зависит от используемой кодировки. Для записи blob'а вам, вероятно, вообще символы не нужны, можно поток из файла в поток blob'а копировать. И посмотрите ByteArray(Input/Output)Stream. Судя по всему, он где-то нужне.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема из конвертированием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]