|
JAVA Micro Edition Низкоуровневое программирование мобильных телефонов. |
17.02.2009, 17:55
|
#1
|
Знающий
Регистрация: 28.07.2008
Адрес: Киев
Сообщений: 228
Написано 61 полезных сообщений (для 191 пользователей)
|
Чтение и запись файлов
Всем привет!
Начну с того, что на javе пишу всего около двух недель так что вопрос будет начального уровня.
Необходимо прочитать локацию побайтово из файла. Нашел несколько примеров чтения из файла, но все они огрызаются. Например:
public static byte [] loadFileAsBytes((
File file)throws IOException
{
byte [] result==new byte [(int)file.length()];
loadFileAsBytes(file,result);
return result;
}
}
f.close();
}
|
Компиляция матерится на классе File и всем, что относится к считыванию. Подскажите что я не так делаю, может в мобильных приложениях это делается как-то подругому...
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
|
(Offline)
|
|
17.02.2009, 22:37
|
#2
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Чтение и запись файлов
Не, в java так не делается.
Читай для примера описание работы с jsr75 (javax.microedition.io.file), хотя еще надо учесть, что у разных производителей телефонов свои специфические API для работы с ФС.
|
(Offline)
|
|
18.02.2009, 00:21
|
#3
|
Знающий
Регистрация: 28.07.2008
Адрес: Киев
Сообщений: 228
Написано 61 полезных сообщений (для 191 пользователей)
|
Ответ: Чтение и запись файлов
Хорошо, перефразирую свой вопрос:
Как лучше реализовать чтение данных о локациях (к примеру массив байт 20х20), таких локаций 10-ки. Может класс массивов создать и читать оттуда?
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
|
(Offline)
|
|
18.02.2009, 00:27
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Чтение и запись файлов
Так, стоп. Для начала, откуда планируется читать данные - из ФС или из ресурса?
|
(Offline)
|
|
18.02.2009, 11:26
|
#5
|
Знающий
Регистрация: 28.07.2008
Адрес: Киев
Сообщений: 228
Написано 61 полезных сообщений (для 191 пользователей)
|
Ответ: Чтение и запись файлов
Мне все равно. Я в java пока ребенок так что чем проще тем лучше. Думаю, не мне пока знать откуда удобнее считывать данные о локации.
Мне кажется, что проще всего сформировать отдельный класс в котором будут двухмерные массивы локаций (т.е. просто набивать вручную) и передавать главному массиву i-й элемент, где i будет номером локации
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
|
(Offline)
|
|
18.02.2009, 18:51
|
#6
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Чтение и запись файлов
Я мобильником начал пользоваться раньше компа, поэтому всё в нём перелазил, перепробовал. Когда сел за комп, уже знал многие тонкости той же Java, хотя не знал самого языка. Например, уже знал, что из файловой системы так просто файл не считать, во-первых, у всех мобил разное АПИ (правда, я тогда этого слова не знал), а во-вторых, мобилы борются за сохранность данных от несертифицированных приложений (вылазит окошко подтверждения). Из ресурса же считать файл просто. Ещё занимался ресурсозаменением, менял картинки, текстовые ресурсы, мелодии. Это ещё было во времена, когда PaintCAD не умел сохранять рисунки в png. Не беда. Я сохранял в gif, переименовывал в png, засовывал в приложение и оно работало (по крайней мере у меня на сименсе). Очень интересно видеть иногда людей, которые разбираются в компах, в программировании, но когда дело доходит до телефонов - это тёмный лес для них, и напротив, видеть ламеров, у которых порой нет компа, но которые знают гораздо больше меня о устройстве телефонов и JVM. =)
|
(Offline)
|
|
20.02.2009, 13:12
|
#7
|
Знающий
Регистрация: 28.07.2008
Адрес: Киев
Сообщений: 228
Написано 61 полезных сообщений (для 191 пользователей)
|
Ответ: Чтение и запись файлов
Примерчик чтения ресурса в студию!
И еще где можно эти ресы сконструировать?
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
|
(Offline)
|
|
20.02.2009, 13:29
|
#8
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Чтение и запись файлов
Тебе ресурс как надо считать? В байтовый массив? В строку?
|
(Offline)
|
|
20.02.2009, 13:46
|
#9
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Чтение и запись файлов
// Открываем ресурс data.txt InputStream is=getClass().getResourceAsStream("/data.txt"); // Теперь можно читать из потока is // Например, нужно считать 5 байт в массив // Создаём массив byte[] by=null; // Инициализируем массив с пятью ячейками by=new byte[5]; // Считываем из потока в массив 5 байт начиная с нулевой ячейки is.read(by,0,5); // Создаём строковую переменную String str=""; // Теперь считаем из потока ещё 5 байт, но теперь в строку for(int i=0;i<5;i++){ str=str+(char)is.read(); } // Не забываем закрыть поток is.close();
Если ресурс прочитали до конца и пытаться прочитать дальше, то is.read() будет возвращать -1. По умолчанию is.read() возвращает int, но можно на лету переделать тип в char, как в примере выше (char)by.read().
Обычно, если нужно просто считать ресурс в строку, то используют StringBuffer, а потом из него берут строку. Код выглядит примерно так:
StringBuffer s=new StringBuffer(); int b; String str; InputStream is=getClass().getResourceAsStream("/data.txt"); while((b=is.read())!=-1) s.append((char)b); is.close(); str=s.toString();
Текст считывается и приводится к юникоду самой джавой и все символы будут имеют вид ASCII, то есть русские буквы не будут выглядеть русскими. Для этого нужно перекодировать самому. Тут на форуме эта тема обсуждалась несколько раз.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:20.
|