public synchronized static long DownloadFile(Socket socket, String URLPath, String LocalFilePath) { assert (URLPath != null); assert (LocalFilePath != null); assert (socket != null); try { PrintWriter socketOut = new PrintWriter(socket.getOutputStream(), true); socketOut.println("GET " + URLPath + " HTTP/1.0"); socketOut.println("Accept: text/plain, text/html, text/*"); socketOut.println(); socketOut.flush(); String output = ""; String totalOutput = ""; BufferedReader socketIn = new BufferedReader( new InputStreamReader( socket.getInputStream())); while ( (output = socketIn.readLine()) != null) { totalOutput += output + "\n"; } if (!totalOutput.startsWith("HTTP/1.1 200 OK")) { return -1; } String dirLocalFilePath = LocalFilePath.substring(0, LocalFilePath.lastIndexOf(File.separator)) + File.separator; if (!new File(dirLocalFilePath).exists()) { new File(dirLocalFilePath).mkdirs(); } BufferedWriter fileOut = new BufferedWriter( new FileWriter(LocalFilePath)); fileOut.write( totalOutput.substring( totalOutput.indexOf("\n\n") + 2) ); fileOut.close(); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); return -1; } return new File(LocalFilePath).length(); }