基本上我想要做的是有一些服務器代碼在任何機器上運行,並能夠訪問和下載該機器上的所有文件和文件夾。我們已經附上我的代碼在底部但這裏是我的,我所知道的,並在我卡:我試圖做一個Java文件服務器
編輯: 我已經告訴我的問題是過於抽象,不明確。我已經想出瞭如何讓我的文件列表。現在我需要在'payLoad'字符串中列出它們。
- 我知道我硬編碼的文件瀏覽器。它只是幫助我開始視覺化。它說'有些文件'和'一些文件夾',因爲那是我希望他們去的地方。
- 我已經將文件加載到數組中,因爲它們是動態的。現在我要將數組列表加載到HTML表中。
我知道有HTTP和URL的事情,我要做的,像GET和POST實際下載的文件,但我仍然需要幫助上手
import java.net.*; import java.io.*; import java.util.Date; import java.awt.Desktop; import java.net.URI; class Main { public static void main(String[] args) throws Exception { File folder = new File("/Users/DeAndre"); File[] listOfFiles = folder.listFiles(); int c = 0; // Listen for a connection from a client ServerSocket serverSocket = new ServerSocket(1234); if (Desktop.isDesktopSupported()) Desktop.getDesktop().browse(new URI("http://localhost:1234")); else System.out.println("Please direct your browser to http://localhost:1234."); while(true) { Socket clientSocket = serverSocket.accept(); System.out.println("Got a connection!"); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String dateString = (new Date()).toGMTString(); while(c<listOfFiles.length) { String payload = "\t\t<table>\n" + "\t\t<tr><td align=right>Current directory:</td><td>/some/path/</td></tr>\n" + "\t\t<tr><td>\n" + "\t\t<b>Folders:</b><br>\n" + "\t\t<select id=\"folderList\" size=\"15\" style=\"width: 280px\" onchange=\"javascript:location.href=this.value;\">\n" + "\t\t\t<option value=\"index.html?cd=..\">..</option>\n" + "\t\t\t<option value=\"index.html?cd=somefolder\">somefolder</option>\n" + "\t\t\t<option value=\"index.html?cd=anotherfolder\">anotherfolder</option>\n" + "\t\t\t<option value=\"index.html?cd=yetanotherone\">yetanotherfolder</option>\n" + "\t\t</select>\n" + "\t\t</td><td>\n" + "\t\t<b>Files:</b><br>\n" + "\t\t<select id=\"fileList\" size=\"15\" style=\"width: 280px\">\n" + "\t\t\t<option value=\"somefile.txt\">somefile.txt</option>\n" + "\t\t\t<option value=\"somefile.txt\">" + listOfFiles[20].getName() + "</option>\n" + "\t\t\t<option value=\"anotherfile.jpeg\">anotherfile.jpeg</option>\n" + "\t\t</select>\n" + "\t\t</td></tr></table>" + listOfFiles[1]; c++; for (int i = 0; i < listOfFiles.length; i++) { if (listOfFiles[i].isFile()) { System.out.println("File " + listOfFiles[i].getName()); } else if (listOfFiles[i].isDirectory()) { System.out.println("Directory " + listOfFiles[i].getName()); } } // Receive the request from the client String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println("The client said: " + inputLine); if (inputLine.length() < 2) break; } //File Browser // Send HTTP headers System.out.println("Sending a response..."); out.print("HTTP/1.1 200 OK\r\n"); out.print("Content-Type: text/html\r\n"); out.print("Content-Length: " + Integer.toString(payload.length()) + "\r\n"); out.print("Date: " + dateString + "\r\n"); out.print("Last-Modified: " + dateString + "\r\n"); out.print("Connection: close\r\n"); out.print("\r\n"); // Send the payload out.println(payload); System.out.println("Done."); } } } }
旁註。出於某種原因,人們忘記了help這個詞的定義,只是變得非常粗魯。請。我知道有很多我不知道,這就是爲什麼我想學習。我卡住了。正確的方向將是有益的。
爲了得到一個明確的答案,你需要問一個具體問題。如果你想要一個代碼審查,那裏有另一個網站。這個論壇是針對明確的編程問題的明確答案,這些問題不是基於觀點的。本論壇不會試圖成爲所有人的全部事情。 –
@PeterLawrey StackOverflow [不是論壇](http://meta.stackexchange.com/questions/92107/is-stack-overflow-a-forum) –
@ cricket_007好點。 –