2018-2019-2 20189205《移動平臺應用開發實踐》第五週做業

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 地址和端口號)。
相關文章
相關標籤/搜索