// Открываем ресурс 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, то есть русские буквы не будут выглядеть русскими. Для этого нужно перекодировать самому. Тут на форуме эта тема обсуждалась несколько раз.