JAVA學習
輸入/輸出
文件系統
Path接口
Path用於來表示文件路徑和文件。
能夠經過FileSystem類的getPath()方法來建立Path實例:java
Path path1 = FileSystems.getDefault().getPath(" /home/user");
Path path1 = FileSystems.getDefault().getPath(" home","user");
也可經過Path類的get()方法建立一個Path實例:編程
Path path2 = Paths.get("C:\\user");
Path path2 = Paths.get("C:\","user");
Path還有方法getFileName()、getParent()、getRoot()等方法得到Path的相對路徑、父目錄、根目錄。服務器
文件和目錄處理
建立
建立文件文件須要使用File類的createFile()方法:網絡
Path newFile = Paths.get("C:\\user\myflie.txt");
Files.createFile(newFile);
建立文件夾與建立文件相同,不過是使用createDirectory()方法:socket
Path newDirectory = Paths.get("C:\\user\mydirectory");
Files.createDirectory(newDirectory);
刪除
刪除文件或文件夾則是使用delete()方法,不過在刪除文件夾時文件夾必須爲空。函數
移動
移動文件須要使用move()方法:學習
public static Path move ( Path source, Path target,
CopyOption ... options) throws java.io.IOException
CopyOption是java.nio.file的一個接口,StandardCopyOption枚舉是其實現只有,其有三種選項:url
- ATOMIC_MOVE 移動文件做爲一個基本的文件系統操做。
- COPY_ATTRIBUTES 將屬性複製到新文件。
- REPLACE_EXISTING 替換已有文件。
複製
複製文件使用copy()方法:.net
public static Path copy ( Path source, Path target,
CopyOption ... options) throws java.io.IOException
文件讀取
Files類提供了readAllBytes()和readAllLine()方法分別用以讀取二進制文件或文本文件:code
public static byte[] readAllBytes(Path path)
throws java.io.IOException
public static List<String> readAllLine(Path path
java.nio.charset.Charset charset) throws java.io.IOException
文件寫入
向二進制文件或文本文件中寫入內容須要使用write()方法:
public static Path write(Path path , byte[] bytes,
OpenOption ... options) throws java.io.IOException
public static Path write(Path path , java.lang.Iterable<? extends
CharSequence> lines , java.nio.charset.Charset charset
OpenOption ... options) throws java.io.IOException
輸入輸出流
在java.io包中使用4個抽象類來表示數據流:
- Reader 從數據池中讀取字符的流。
- Writer 向數據池中寫入數據的流。
- InputStream 從數據池中讀取二進制數據的流。
- Outputstream 向數據池中寫入二進制數據的流。
網絡
java.net 包中 J2SE 的 API 包含有類和接口,它們提供低層次的通訊細節,能夠直接使用這些類和接口,來專一於解決問題,而不用關注通訊細節。
java.net 包中提供了兩種常見的網絡協議的支持:
- TCP:TCP 是傳輸控制協議的縮寫,它保障了兩個應用程序之間的可靠通訊。
- UDP:UDP 是用戶數據報協議的縮寫,一個無鏈接的協議。提供了應用程序之間要發送的數據的數據包。
URL處理
URL(Uniform Resource Locator)中文名爲統一資源定位符,有時也被俗稱爲網頁地址。表示爲互聯網上的資源,如網頁或者FTP地址,URL能夠分爲以下幾個部分。
protocol://host:port/path?query#fragment
URL類
在java.net包中定義了URL類,該類用來處理有關URL的內容。
建立URL
java.net.URL提供了豐富的URL構建方式,並能夠經過java.net.URL來獲取資源。
- 1 public URL(String protocol, String host, int port, String file) throws MalformedURLException. 經過給定的參數(協議、主機名、端口號、文件名)建立URL。
- 2 public URL(String protocol, String host, String file) throws MalformedURLException 使用指定的協議、主機名、文件名建立URL,端口使用協議的默認端口。
- 3 public URL(String url) throws MalformedURLException 經過給定的URL字符串建立URL
- 4 public URL(URL context, String url) throws MalformedURLException 使用基地址和相對URL建立
方法
URL類中包含了不少方法用於訪問URL的各個部分,具體方法及描述以下:
- 1 public String getPath() 返回URL路徑部分。
- 2 public String getQuery() 返回URL查詢部分。
- 3 public String getAuthority() 獲取此 URL 的受權部分。
- 4 public int getPort() 返回URL端口部分
- 5 public int getDefaultPort() 返回協議的默認端口號。
- 6 public String getProtocol() 返回URL的協議
- 7 public String getHost() 返回URL的主機
- 8 public String getFile() 返回URL文件名部分
- 9 public String getRef() 獲取此 URL 的錨點(也稱爲"引用")。
- 10 public URLConnection openConnection() throws IOException 打開一個URL鏈接,並運行客戶端訪問資源。
URLConnections 類
使用openConnection() 方法將返回一個 java.net.URLConnection。
URLConnection 方法列表以下:
- 1 Object getContent() 檢索URL連接內容
- 2 Object getContent(Class[] classes) 檢索URL連接內容
- 3 String getContentEncoding() 返回頭部 content-encoding 字段值。
- 4 int getContentLength() 返回頭部 content-length字段值
- 5 String getContentType() 返回頭部 content-type 字段值
- 6 int getLastModified() 返回頭部 last-modified 字段值。
- 7 long getExpiration() 返回頭部 expires 字段值。
- 8 long getIfModifiedSince() 返回對象的 ifModifiedSince 字段值。
- 9 public void setDoInput(boolean input) URL 鏈接可用於輸入和/或輸出。若是打算使用 URL 鏈接進行輸入,則將 DoInput 標誌設置爲 true;若是不打算使用,則設置爲 false。默認值爲 true。
- 10 public void setDoOutput(boolean output) URL 鏈接可用於輸入和/或輸出。若是打算使用 URL 鏈接進行輸出,則將 DoOutput 標誌設置爲 true;若是不打算使用,則設置爲 false。默認值爲 false。
- 11 public InputStream getInputStream() throws IOException 返回URL的輸入流,用於讀取資源
- 12 public OutputStream getOutputStream() throws IOException 返回URL的輸出流, 用於寫入資源。
- 13 public URL getURL() 返回 URLConnection 對象鏈接的URL。
Socket 編程
套接字使用TCP提供了兩臺計算機之間的通訊機制。 客戶端程序建立一個套接字,並嘗試鏈接服務器的套接字。
當鏈接創建時,服務器會建立一個 Socket 對象。客戶端和服務器如今能夠經過對 Socket 對象的寫入和讀取來進行通訊。
java.net.Socket 類表明一個套接字,而且 java.net.ServerSocket 類爲服務器程序提供了一種來監聽客戶端,並與他們創建鏈接的機制。
如下步驟在兩臺計算機之間使用套接字創建TCP鏈接時會出現:
- 服務器實例化一個 ServerSocket 對象,表示經過服務器上的端口通訊。
- 服務器調用 ServerSocket 類的 accept() 方法,該方法將一直等待,直到客戶端鏈接到服務器上給定的端口。
- 服務器正在等待時,一個客戶端實例化一個 Socket 對象,指定服務器名稱和端口號來請求鏈接。
- Socket 類的構造函數試圖將客戶端鏈接到指定的服務器和端口號。若是通訊被創建,則在客戶端建立一個 Socket 對象可以與服務器進行通訊。
- 在服務器端,accept() 方法返回服務器上一個新的 socket 引用,該 socket 鏈接到客戶端的 socket。
鏈接創建後,經過使用 I/O 流在進行通訊,每個socket都有一個輸出流和一個輸入流,客戶端的輸出流鏈接到服務器端的輸入流,而客戶端的輸入流鏈接到服務器端的輸出流。
Socket類
java.net.Socket 類表明客戶端和服務器都用來互相溝通的套接字。客戶端要獲取一個 Socket 對象經過實例化 ,而 服務器得到一個 Socket 對象則經過 accept() 方法的返回值。
構建
Socket 類有五個構造方法.
- 1 public Socket(String host, int port) throws UnknownHostException, IOException. 建立一個流套接字並將其鏈接到指定主機上的指定端口號。
- 2 public Socket(InetAddress host, int port) throws IOException 建立一個流套接字並將其鏈接到指定 IP 地址的指定端口號。
- 3 public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException. 建立一個套接字並將其鏈接到指定遠程主機上的指定遠程端口。
- 4 public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException. 建立一個套接字並將其鏈接到指定遠程地址上的指定遠程端口。
- 5 public Socket() 經過系統默認類型的 SocketImpl 建立未鏈接套接字
方法
因爲客戶端和服務器端都有一個 Socket 對象,因此不管客戶端仍是服務端都可以調用這些方法。
- 1 public void connect(SocketAddress host, int timeout) throws IOException 將此套接字鏈接到服務器,並指定一個超時值。
- 2 public InetAddress getInetAddress() 返回套接字鏈接的地址。
- 3 public int getPort() 返回此套接字鏈接到的遠程端口。
- 4 public int getLocalPort() 返回此套接字綁定到的本地端口。
- 5 public SocketAddress getRemoteSocketAddress() 返回此套接字鏈接的端點的地址,若是未鏈接則返回 null。
- 6 public InputStream getInputStream() throws IOException 返回此套接字的輸入流。
- 7 public OutputStream getOutputStream() throws IOException 返回此套接字的輸出流。
- 8 public void close() throws IOException 關閉此套接字。
ServerSocket 類
服務器應用程序經過使用 java.net.ServerSocket 類以獲取一個端口,而且偵聽客戶端請求。
構建
ServerSocket 類有四個構造方法:
- 1 public ServerSocket(int port) throws IOException 建立綁定到特定端口的服務器套接字。
- 2 public ServerSocket(int port, int backlog) throws IOException 利用指定的 backlog 建立服務器套接字並將其綁定到指定的本地端口號。
- 3 public ServerSocket(int port, int backlog, InetAddress address) throws IOException 使用指定的端口、偵聽 backlog 和要綁定到的本地 IP 地址建立服務器。
- 4 public ServerSocket() throws IOException 建立非綁定服務器套接字。
方法
ServerSocket 類的經常使用方法有:
- 1 public int getLocalPort() 返回此套接字在其上偵聽的端口。
- 2 public Socket accept() throws IOException 偵聽並接受到此套接字的鏈接。
- 3 public void setSoTimeout(int timeout) 經過指定超時值啓用/禁用 SO_TIMEOUT,以毫秒爲單位。
- 4 public void bind(SocketAddress host, int backlog) 將 ServerSocket 綁定到特定地址(IP 地址和端口號)。