Я пытался прочитать размер файла, который находится в сетевом расположении.
Я мог прочитать его, запросив заголовок http.Но я впервые использовал метод InpuStream или BufferedInputStream available (). При чтении байтов с помощью bis.read () он показывает 0 с помощью available ().
Почему он не будет работать с available ()?
public class GetNetworkLocation {
public void main(String[] arg) {
new GetNetworkLocation.startApp();
}
private void startApp() {
getNetworkFile();
}
private void getNetworkFile() throws MalformedURLException, IOException, InterruptedException {
try {
input = new URL(UrlString).openStream();
bis = new BufferedInputStream(input);
// Strange the content is 0 ?
System.out.println("File size with BufferedInputStream" + " " + bis.available());
System.out.println("File size with Http Head Request" + " " + bis.available());
}
} catch (MalformedURLException me) {System.out.println("Type a correct Network Address for your File!");}
}
public long getFileSize(new URL(UrlString)) {
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("HEAD");
return conn.getContentLengthLong();
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
conn.disconnect();
}
}
}}