![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
FoxWMulder |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Ну никак не могу разобраться. Надо: 1. открыть файл 2. загрузить его в массив 3. из массива нарисовать
Не знаю как загрузить в массив, у меня сейчас грузит просто в лист
причем в этом коде, я мало чего понимаю, вроде он грузит по символьно ( зачем? ) - можно ли сделать загрузку по строчно? Файл имеет к примеру 20 строчек, надо их вставить в массив, по принципу - пять строчек в первый столбец, следующие пять строчек во второй столбец и так далее. У меня сейчас чикл рисует из листа ( у меня не получилось сделать массив )
вроде все правильно, но работает он совершенно не правильно: две строчки в одном столбце, две в следующим и тд, а надо по 5 строчек. В итоге толи загрузка не правильная, толи в отрисовке. После решения этой проблемы, мне надо сделать еще и выбор файла. Если кто может - подскажите, только популярно ибо я только начал в java2me разбираться, на Pascal'е программирую еще, но java и паскаль как то мало схожи |
||||
|
|||||
eugine_s |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Нужно использовать FileConnection API (JSR-75) Ты бы в коде сначала разобрался в своем: а то у меня что-то есть, я не понимаю почему оно вообще как-то работает, но вы мне подскажите. А вообще еще лучше сначала взять толковую книжку для начинающих по "обычной" джаве и разобраться там с азами.
Например тут: он грузит побайтно, а потом "переделывает". Этот вопрос описан в байтовых и символьных потоках (один из первых разделов в любой книге по j2se) Если же совет по твоему коду давать, то попробуй сначала нормально загрузить твой файл и его содержимое загнать в строку, а уже распарсить строчку - это проблем не составит. То есть, сначала считай файл в строку и сделай вывод в командную строку (на эмуляторе) этой строки и посмотри правильно ли считался твой файл. |
||||
|
|||||
FoxWMulder |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
как? InputConnection connection; ? смысл не поменялься, а через эмулятор - у меня файл вообще не открываеться ( появляеться запрос на открытие и все ), только с мобильника
если бы еще знать КАК? ![]() |
||||
|
|||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Что значит смысл не меняется? Если уже направление не ясно, то прямая ссылка поможет? http://www.mobilab.ru/articles/79/ В статье есть как читать из файла (хотя это у тебя у самого есть в коде, но ты наверное еще не знаешь об этом? ![]() |
|||
|
||||
FoxWMulder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Дык вроде читает, только...
все таки у меня не правильно читает из файда, вот пример Файл: " 1 2 3 4 5 6 7 " Она все читает, но пропускает пустые строки Это сообщение отредактировал(а) FoxWMulder - 23.11.2007, 20:05 |
|||
|
||||
eugine_s |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
1. Скажи, а что программа должно делать с пустой строкой? 2. Что в этом куске кода делается?
3. Что значит пустая строка? В файле нет пустой строки, там есть символы. Так какой код "пустой строки"? 4. Опять же по коду приведенному выше. Что это за магическое число 798 ? |
||||
|
|||||
FoxWMulder |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
мда неправ. 798 - размер файла в строках, по идеи это условие не нужно, надо просто идти до конца файла, сейчас попробую убрать. - ну точно ничего и не поменялось.
а пустая строка, это я имею ввиду - пустая с точки зрения человека - без символов ( пробел ? ) вот так файл выглядит для меня: " 1 2 3 4 5 6 7 " а она читает: " 1 2 3 4 5 6 7 "
черти его знает... ну вообщем я так понимаю, читаем строку если она не пустая ( >0 ) то заносим в список бред... ![]() но если убрать условие >0 то она вообще както хитро разбивает строки теперь код выглядит так
опять же пусты строки для нее не существуют я не понимаю ( счастье так близко ) просто надо узнать что строка без символов ( вообще, там даже пробела нету ) - почему она его пропускает - ну фиг с ней, но узнать это же как то можно вот файл из HEX-вида 310D 0A0D 0A32 0D0A 330D 0A34 он же только по-человечески " 1 2 3 4 " следовательно "0A0D" = пустая строка у меня в коде есть "if(ch==0xD || ch==0xA){" - что определяет конец строки как из этого определить пустую строку?! Это сообщение отредактировал(а) FoxWMulder - 23.11.2007, 20:44 |
||||
|
|||||
FoxWMulder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
я убьюсь с это джавой, разные файлы читает по разному - ну не понимаю
кроме по байтного чтения не ужели нет другого способа а там пробелы вот такую строчку она и читает нормально, а вообще без символов... пропускает Это сообщение отредактировал(а) FoxWMulder - 23.11.2007, 20:59 |
|||
|
||||
eugine_s |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Для кого тут я давал ответы??? Смотрим первый пост: потоки бывают байтовые и символьные. Слушай, как ты хочешь написать программу на j2me если совсем не имеешь представления о j2se? Как бы это твое личное дело, я тебе могу дать ответ, но прежде чем задать следующий вопрос прочитай ХОТЯ БЫ ВОТ ЭТУ СТАТЬЮ: http://skipy.ru/philosophy/learning.html там как раз про тебя написано. Заодно и остальные статьи прочитай: много полезного найдешь. Пустая строка - это для тебя и меня текстовый редактор показывает пустую строку, а для файла это только символ. Вопрос звучал так: Так какой код "пустой строки"? Правильный ответ: 13 10 (заметь это два символа, символ окончания строки(Enter) и символ перевода каретки) Теперь скажи какое значение имеют эти коды (13 и 10) в 16-тиричном формате (кстати, как 16-тиричный формат в java записывается?) Ответ: A и D 13 = 0xD 10 = 0xA Смотрим теперь в код:
Что должна делать программа если встретила "пустую строчку" (на самом деле символ окончания строки)? Твой пример: 1 2 3 4 В файле это выглядит вот так: 1\n\r2\n\r3\n\r\n\r4\n\r ( \n - код 13, \r - код 10) твой цикл обработки считал файл и начинает обрабатывать байты: 1 - записал в tmpStr \n - выполняется условие if(ch==0xD || ch==0xA) : записываем из tmpStr в list \r - выполняется условие if(ch==0xD || ch==0xA) : но tmpStr - пустой, никаких действий не происходит 2 - записал в tmpStr \n - выполняется условие if(ch==0xD || ch==0xA) : записываем из tmpStr в list \r - выполняется условие if(ch==0xD || ch==0xA) : но tmpStr - пустой 3 - записал в tmpStr \n - выполняется условие if(ch==0xD || ch==0xA) : записываем из tmpStr в list \r - выполняется условие if(ch==0xD || ch==0xA) : но tmpStr - пустой //собственно дальше идет твоя "пустая строка" \n - выполняется условие if(ch==0xD || ch==0xA) : НО tmpStr - пустой, никаких действий не происходит!!! \r - выполняется условие if(ch==0xD || ch==0xA) : опять же tmpStr - пустой, никаких действий не происходит 4 - записал в tmpStr \n - выполняется условие if(ch==0xD || ch==0xA) : записываем из tmpStr в list \r - выполняется условие if(ch==0xD || ch==0xA) : но tmpStr - пустой ...... Если не понял, то лучше сядь и разберись, иначе ..... программирование - не для тебя. Вот теперь скажи, кто по разному читает файлы? Java? или ты не понимая сути, берешь чужой код и не разобравшись (да даже не познакомившись с языком программирования) просишь совета... |
||||
|
|||||
shomer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 7.11.2007 Репутация: нет Всего: нет |
eugine_s спасибо за ссылку на skipy.ru
Это сообщение отредактировал(а) shomer - 24.11.2007, 02:12 |
|||
|
||||
shomer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 7.11.2007 Репутация: нет Всего: нет |
Все таки свербит
Хотя тут явно надо бы - читаешь в буфер, обрабатываешь его |
|||
|
||||
eugine_s |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
То есть?
или я вопрос не понял
Посмотри коды в Кирилице (Cp1251) русских буков и посмотри на этиже коды в Unicode. Зачем? Можно и без этого. |
||||
|
|||||
FoxWMulder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Точно вспомнил конец строки-перевод строки. eugine_s вот теперь ты мне расписал все подробно и я понял в чем моя ошибка и чего надобно собственно сделать. shomer твой код работает правильно только "byte prev_ch;" заменил на "int prev_ch = 0;" у меня же "ch" - integer; иначе она не хочет присваивать.
Как юзать символьные? А почему надо начинать именно с java2se а не me? Интересно "String mas[];" - компилит, а "String[] mas = new string[10];" - не компилит, почему? собственно мне двухмерный массив нужен, но тут и одномерный не хочет. Это сообщение отредактировал(а) FoxWMulder - 26.11.2007, 16:13 |
|||
|
||||
eugine_s |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Про явное приведение типов не слышал наверное. http://www.ssga.ru/metodich/web_diz/8/6.html
книги, книги и еще раз книги (книги можна заменить на доки). |
||||
|
|||||
FoxWMulder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
слышал... на паскале
![]() только тогда она тормозиться на "else if ( prev_ch==0xA)", правильно это в integer а теперь надо в byte, ладно работает и хорошо |
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |