InputStreamReader是字节转型为字符的桥梁
InputStreamReader可以设置转换后的编码格式
package InputStreamReader01;
import java. io. *;
public class InputStreamReader01 {
public static void main ( String[ ] args) throws IOException {
String path= "E:\\test.txt" ;
InputStreamReaderC ( path) ;
}
public static void InputStreamReaderC ( String path) throws IOException {
BufferedReader bR = new BufferedReader ( new InputStreamReader ( new FileInputStream ( path) , "utf-16" ) ) ;
System. out. println ( bR. readLine ( ) ) ;
bR. close ( ) ;
System. out. println ( "完成" ) ;
}
public static void OutputStreamWriteC ( String path) throws IOException {
String ct= "UTF-16" ;
BufferedWriter bow = new BufferedWriter ( new OutputStreamWriter ( new FileOutputStream ( path) , ct) ) ;
bow. write ( "nihao,你好世界!!! " + ct+ "格式" ) ;
bow. close ( ) ;
}
}
字节流客户端
package InetAddRess. TCP;
import java. io. IOException;
import java. io. InputStream;
import java. io. OutputStream;
import java. net. InetAddress;
import java. net. Socket;
import java. net. UnknownHostException;
public class SockedTcpClient {
public static void main ( String[ ] args) throws IOException {
System. out. println ( "正在连接。。。" ) ;
Socket socket = new Socket ( InetAddress. getLocalHost ( ) , 9999 ) ;
System. out. println ( "连接成功!" ) ;
OutputStream outputStream = socket. getOutputStream ( ) ;
System. out. println ( "正在发送数据!" ) ;
outputStream. write ( "你好啊,服务端!" . getBytes ( ) ) ;
socket. shutdownOutput ( ) ;
InputStream inputStream = socket. getInputStream ( ) ;
byte [ ] bytes = new byte [ 1024 ] ;
int read = 0 ;
while ( ( read = inputStream. read ( bytes) ) != - 1 ) {
System. out. println ( new String ( bytes, 0 , read) ) ;
}
System. out. println ( "数据处理完毕,连接断开。" ) ;
inputStream. close ( ) ;
socket. close ( ) ;
outputStream. close ( ) ;
}
}
字节流服务端
package InetAddRess. TCP;
import java. io. IOException;
import java. io. InputStream;
import java. io. OutputStream;
import java. net. InetAddress;
import java. net. ServerSocket;
import java. net. Socket;
import java. net. UnknownHostException;
public class SockedTcpServer {
public static void main ( String[ ] args) throws IOException {
ServerSocket serverSocket = new ServerSocket ( 9999 ) ;
System. out. println ( "服务器正在等待连接。。。" ) ;
Socket socket = serverSocket. accept ( ) ;
InputStream inputStream = socket. getInputStream ( ) ;
byte [ ] bytes = new byte [ 1024 ] ;
int read = 0 ;
while ( ( read = inputStream. read ( bytes) ) != - 1 ) {
System. out. println ( new String ( bytes, 0 , read) ) ;
}
socket. shutdownInput ( ) ;
OutputStream outputStream = socket. getOutputStream ( ) ;
System. out. println ( "正在发送数据!" ) ;
outputStream. write ( "你好啊,客户端!" . getBytes ( ) ) ;
System. out. println ( "数据处理完毕,断开连接!" ) ;
outputStream. close ( ) ;
inputStream. close ( ) ;
socket. close ( ) ;
serverSocket. close ( ) ;
}
}
字符流客户端
package InetAddRess. TCP;
import java. io. *;
import java. net. InetAddress;
import java. net. Socket;
public class SocekdTcpClientZiFu {
public static void main ( String[ ] args) throws IOException {
Socket socket = new Socket ( InetAddress. getLocalHost ( ) , 9999 ) ;
OutputStream outputStream = socket. getOutputStream ( ) ;
OutputStreamWriter outputStreamWriter = new OutputStreamWriter ( outputStream) ;
BufferedWriter bufferedWriter = new BufferedWriter ( outputStreamWriter) ;
bufferedWriter. write ( "你好服务端,我是客户端!!!" ) ;
bufferedWriter. flush ( ) ;
socket. shutdownOutput ( ) ;
InputStream inputStream = socket. getInputStream ( ) ;
InputStreamReader inputStreamReader = new InputStreamReader ( inputStream) ;
BufferedReader bufferedReader = new BufferedReader ( inputStreamReader) ;
String s;
while ( ( s = bufferedReader. readLine ( ) ) != null) {
System. out. print ( s) ;
}
System. out. println ( "服务退出!" ) ;
socket. close ( ) ;
bufferedWriter. close ( ) ;
outputStream. close ( ) ;
outputStreamWriter. close ( ) ;
}
}
字符流服务端
package InetAddRess. TCP;
import java. io. *;
import java. net. ServerSocket;
import java. net. Socket;
public class SocketTcpServerZiFu {
public static void main ( String[ ] args) throws IOException {
ServerSocket serverSocket = new ServerSocket ( 9999 ) ;
System. out. println ( "服务器正在等待连接。。。" ) ;
Socket socket = serverSocket. accept ( ) ;
InputStream inputStream = socket. getInputStream ( ) ;
InputStreamReader inputStreamReader = new InputStreamReader ( inputStream) ;
BufferedReader bufferedReader = new BufferedReader ( inputStreamReader) ;
String s;
while ( ( s = bufferedReader. readLine ( ) ) != null) {
System. out. print ( s) ;
}
socket. shutdownInput ( ) ;
OutputStream outputStream = socket. getOutputStream ( ) ;
OutputStreamWriter outputStreamWriter = new OutputStreamWriter ( outputStream) ;
BufferedWriter bufferedWriter = new BufferedWriter ( outputStreamWriter) ;
bufferedWriter. write ( "你好客户端,我是服务端!!!" ) ;
bufferedWriter. flush ( ) ;
System. out. println ( "服务端退出!" ) ;
socket. close ( ) ;
serverSocket. close ( ) ;
bufferedReader. close ( ) ;
inputStream. close ( ) ;
inputStreamReader. close ( ) ;
}
}
网络编程基础知识
package InetAddRess;
import org. junit. Test;
import java. net. InetAddress;
import java. net. UnknownHostException;
public class Api01 {
public static void main ( String[ ] args) throws UnknownHostException {
InetAddress localHost = InetAddress. getLocalHost ( ) ;
System. out. println ( "自动获取当前计算机名称以及IP:" + localHost) ;
InetAddress host2 = InetAddress. getByName ( "TMJIE5200" ) ;
System. out. println ( "通过指定主机或者域名来获取ip地址对象:" + host2) ;
InetAddress host3 = InetAddress. getByName ( "www.baidu.com" ) ;
System. out. println ( "指定域名获取ip地址对象:" + host3) ;
String host3Name = host3. getHostName ( ) ;
System. out. println ( "获取到的主机名为:" + host3Name) ;
String host3Address = host3. getHostAddress ( ) ;
System. out. println ( "该主机对应的ip地址为:" + host3Address) ;
fun ( ) ;
}
@Test
public static void fun ( ) throws UnknownHostException {
InetAddress localHost = InetAddress. getLocalHost ( ) ;
System. out. println ( localHost) ;
System. out. println ( localHost. getHostName ( ) ) ;
System. out. println ( localHost. getHostAddress ( ) ) ;
InetAddress byName = InetAddress. getByName ( "www.baidu.com" ) ;
System. out. println ( byName. getHostAddress ( ) ) ;
}
}
上面的这张图很重要,可以看出转换流,只是具有转换的作用,并没有其他作用,不能直接调用write或者read方法。