Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / какие способы указать путь к файлу в jar архиве / 4 сообщений из 4, страница 1 из 1
06.03.2007, 13:01:25
    #34374156
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какие способы указать путь к файлу в jar архиве
кто нибудь знает более приличный способ реализовать это

есть sql запросы которые находятся в простых текстовых файлах
они соотвественно заключены в архив(jar file) org.lalala.sql вообщем внутри папки sql

каким макаром их можно прочитать например из другого package
например в классе org.ui.UserIDSQL



варианты

class UseIDSQL{
File file=new File("org/lalala/sql/getUseId.sql")
}

не подошло, вылетает FileNotFound


кто нить подскажите как покрасивше да поменьше чтобы
можно было их читать менее нанайским способом который я только и смог реализовать

обязательно в папку где лежат sql запросы создать класс типа
class LoadSQL

где написать

URL url=LoadSQL.class.getResource("getUserId.sql");

потом этот url превратить в uri не напарив с кодировкой не дай боже

что то типа URI uri=url.toString().decode() и т.д.

и только потом создавать File sqlfile=new File(uri);

и наконец метод возвращяющий getFile(){return sqlfile;}





полностью

<code>
package org.lalalal.sql;

import java.net.URL;
import java.net.URI;
import java.io.FIle;

class LoadSQL{
private URL;
private URI;
private File sqlfile;

public LoadSQL(String filename){
url=LoadSQL.class.getResource(filename);
uri=url.toString().decode(); //здесь точно на память не помню
sqlfile=new File(uri);
}

public File getFile(){
return sqlfile;
}
}
</code>

иконки на JLabel ставятся через относительные пути и ниче работаеет
а реализацию как путь к ним находится в исходниках не нашел, все куда то в недра swing уходит
...
Рейтинг: 0 / 0
06.03.2007, 13:25:44
    #34374279
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какие способы указать путь к файлу в jar архиве
Class.getResourceAsStream() - единственный нормальный метод для такого случая.
...
Рейтинг: 0 / 0
07.03.2007, 08:48:40
    #34376377
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какие способы указать путь к файлу в jar архиве
фишка ф том что при этом получается обязательно должен быть какой либо файл ф папке org.lalala.sql неважно какой например
class a{}
вполне достаточно
в принципе работает но некрасиво как то

есть еще один вариант реализации но он тоже не простой и сложнее.
сложнее не в смысле в понимании и реализации а в том что запутаться легко

repalaceFirt() -ом резать строку url-а

(имеется ввиду получить url на sql файл из требумого package.)


спасибо Blazkowicz (ник у Вас никак запомнить не могу только копи энд паст, непродуктивно и некрасиво с точки зрения повторного использования

я сразу не понял как использовать Class.getResourceAsStream()
до сих пор путаюсь в java.io кто кого реализует имплементирует кого в куда вставлять запутано как то

вот решение в package org.lalala.sql
вставить такой файл


org.lalala.sql;

class SQLReader{


private String query="";

public SQLReader(String filename) throws IOException{
InputStream input=SQLFile.getResourceAsStream(filename);
InputStreamReader reader=new InputStreamReader(input);
StringBuffer sb=new StringBuffer(500);
int i;
while(((i=reader.read())!=1)
sb.append((char)i);
query=sb.toString();
}

public String getQuery(){
return query;
}
}
...
Рейтинг: 0 / 0
07.03.2007, 08:52:39
    #34376386
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какие способы указать путь к файлу в jar архиве
не совсем правильный класс там еще надо проверять не равно ли InputStream null и не IOException
а FileNotFoundException только подумал
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / какие способы указать путь к файлу в jar архиве / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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