Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > Re:Read file in the jar file?

Reply
Thread Tools

Re:Read file in the jar file?

 
 
pvii007
Guest
Posts: n/a
 
      12-09-2005
import java.io.*;
public class A
{
public static void main( String[] args)throws Exception
{
A app = new A();
BufferedReader bf = new BufferedReader(
new InputStreamReader(app.getResourceAsStream("a.txt") )
);
if( bf.ready())System.out.println(br.readLine());
}
}
a.txt
hello world

I compress the compiled A and a.txt in the jar file.

Run it. It's successful.

But
import java.io.*;
public class A
{
public static void main( String[] args)throws Exception
{
A app = new A();
BufferedReader bf = new BufferedReader(
new InputStreamReader(app.getResourceAsStream("/dir/a.txt"))// here I
modify it
);
if( bf.ready())System.out.println(br.readLine());
}
}
dir/a.txt
hello world

I still create the jar file.
Run it. It's failure

Why?

Is reading some file in the jar file approprate for the situation that the
file and the class is under the same package ?

If I want to use the class to read the file which is not under same package,
how to implement it?



 
Reply With Quote
 
 
 
 
Paulus de Boska
Guest
Posts: n/a
 
      12-09-2005
Try this instead :
app.getResourceAsStream("dir/a.txt")

without the root-slash

Paul Hamaker
SEMM
http://javalessons.com

 
Reply With Quote
 
 
 
 
Alex
Guest
Posts: n/a
 
      12-09-2005
My 2 cents.
1) / is root of jar file. So, if it's in dir "dir" in jar it will be
OK.
2) I dont't know why but you can't read files as resources from root
directly.
They must be in some directory.

So, create jar with at least one directory "dir", place file here and
read it as
/dir/a.txt

It works.

 
Reply With Quote
 
pvii007
Guest
Posts: n/a
 
      12-10-2005
import java.io.*;
public class A
{
public static void main( String[] args)throws Exception
{
A app = new A();
BufferedReader bf = new BufferedReader(
new InputStreamReader(app.getClass().getResourceAsStre am("txt/b.txt"))
);
if( bf.ready())System.out.println(bf.readLine());
}
}

Sorry It's still failure

E:\code\java\test\jar\test>java -jar a.jar
Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at A.main(A.java:7)

"Alex" <(E-Mail Removed)>
??????:(E-Mail Removed) groups.com...
> My 2 cents.
> 1) / is root of jar file. So, if it's in dir "dir" in jar it will be
> OK.
> 2) I dont't know why but you can't read files as resources from root
> directly.
> They must be in some directory.
>
> So, create jar with at least one directory "dir", place file here and
> read it as
> /dir/a.txt
>
> It works.
>



 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      12-10-2005
On Sat, 10 Dec 2005 10:27:46 +0800, "pvii007" <(E-Mail Removed)>
wrote, quoted or indirectly quoted someone who said :

>E:\code\java\test\jar\test>java -jar a.jar
>Exception in thread "main" java.lang.NullPointerException
> at java.io.Reader.<init>(Unknown Source)
> at java.io.InputStreamReader.<init>(Unknown Source)
> at A.main(A.java:7)


lets see a directory of your jar to make sure you have everything
named correctly.
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
Reply With Quote
 
Alex
Guest
Posts: n/a
 
      12-10-2005
You didn't include / !!!
It means that directory txt msut be where you class is.
For example if it is class abc.xyz.Test
then directory and file should be (in the jar) /abc/xyz/txt/b.txt

So I suggest always use root and have it like
/config/b.txt

 
Reply With Quote
 
pvii007
Guest
Posts: n/a
 
      12-10-2005
That's OK.
Thank you for your help.

Another problem.

If I have a file structure
/core/ (here is application)
/core/doc ( here is the doc )
/core/doc/filecollection1/
/core/doc/filecollection1/subcollection1/
/core/doc/filecollection1/subcollection2/
/core/doc/filecollection2/
/core/doc/filecollection2/subcollection1/
/core/doc/filecollection2/subcollection2/

I compress the file and doc in the jar file.I want to access to every dir or
file recursively.

How to write my code?

PS:
I have written the code
....

File codebase = new File("/core/doc");
....
public String read_file_recursive( File file)
{
String ret;
if( codebase.isDirectory())
{
File[] filelist = codebase.listFiles();
for( int i = 0 ; i < filelist;i++ )
{
ret += read_file_recursive(filelist[i]);
}
}
else
{
// read file content ...
}
return ret;
}
....
But it doesn't work under the jar file.



"pvii007" <(E-Mail Removed)> 写入消息新闻:dndef5$r8g$(E-Mail Removed)...
> import java.io.*;
> public class A
> {
> public static void main( String[] args)throws Exception
> {
> A app = new A();
> BufferedReader bf = new BufferedReader(
> new InputStreamReader(app.getClass().getResourceAsStre am("txt/b.txt"))
> );
> if( bf.ready())System.out.println(bf.readLine());
> }
> }
>
> Sorry It's still failure
>
> E:\code\java\test\jar\test>java -jar a.jar
> Exception in thread "main" java.lang.NullPointerException
> at java.io.Reader.<init>(Unknown Source)
> at java.io.InputStreamReader.<init>(Unknown Source)
> at A.main(A.java:7)
>
> "Alex" <(E-Mail Removed)>
> ??????:(E-Mail Removed) groups.com...
>> My 2 cents.
>> 1) / is root of jar file. So, if it's in dir "dir" in jar it will be
>> OK.
>> 2) I dont't know why but you can't read files as resources from root
>> directly.
>> They must be in some directory.
>>
>> So, create jar with at least one directory "dir", place file here and
>> read it as
>> /dir/a.txt
>>
>> It works.
>>

>
>



 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      12-10-2005
On Sat, 10 Dec 2005 12:40:07 +0800, "pvii007" <(E-Mail Removed)>
wrote, quoted or indirectly quoted someone who said :

>But it doesn't work under the jar file.


If you wanted it to look inside jar files, you would need to use a
filter to find the *.jar files, and individually read them with the
jar classes. Members are not part of the file system.

See http://mindprod.com/jgloss/jar.html
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
java -cp a.jar -jar b.jar => Works on Windows, not on Debian cyberco Java 4 02-14-2006 06:27 AM
jaas.jar, jta.jar jdbc-stdext.jar missing from jdk1.5 RPM muttley Java 0 10-20-2005 02:40 PM
Differences of xercesImpl.jar, xercesImpl-J.jar, dom3-xercesImpl.jar ? Arnold Peters Java 0 01-05-2005 10:59 PM
Differences of xercesImpl.jar, xercesImpl-J.jar, dom3-xercesImpl.jar ? Arnold Peters XML 0 01-05-2005 10:59 PM
how to disassembly a .jar file? how to see what are the classes inside the .jar file? lucy Java 6 09-07-2004 09:54 PM



Advertisments