summaryrefslogtreecommitdiffstats
path: root/libjava/gnu/gcj/util/path/PathEntry.java
blob: f83fc1701702c0e3709754934baa59ba48e5f0af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// PathEntry.java -- abstract element of search paths

/* Copyright (C) 1999  Cygnus Solutions

   This file is part of libgcj.

This software is copyrighted work licensed under the terms of the
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
details.  */

/* Author: Kresten Krab Thorup <krab@gnu.org>  */

package gnu.gcj.util.path;

import java.util.*;
import java.util.zip.*;
import java.io.*;
import java.net.*;

abstract class PathEntry {
  abstract URL getURL (String file);
  abstract InputStream getStream (String file);
  abstract byte[] getBytes (String file);

  /**
   *  Utility routine like InputStream.read(byte[], 0, len), but will
   *  read fully, even if all the data is not available at once.  
   */
  protected static byte[] readbytes (InputStream is, int length)
  {
    try {

      byte[] data = new byte[length];
      int read; 
      int off = 0;
	    
      while (off != length)
	{
	  read = is.read (data, off, (int) (length-off));

	  if (read == -1) 
	    return null;

	  off += read;
	}
	    
      return data;
    } catch (IOException x) {
      return null;
    }
  }

}


OpenPOWER on IntegriCloud