个人感觉,流是java中不同设备之间交换数据的媒介,例如socket中数据的传输,以及文件的读写操作等,都是通过流来实现的.
流的种类
从处理的数据类型上来看,流主要分为字符流(InputStream, OutputStream)和字节流(Reader, Writer),而从功能上来看,主要分为输入流以及输出流.
文件的读写
File file = new File(".\\test.txt");
//参数true:表示在文件后边追加内容
FileOutputStream fileOutputStream = new FileOutputStream(file, true);
FileInputStream fileInputStream = new FileInputStream(file);
//装饰者模式,使用带缓冲的输入流
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
//使用byte,字节流读取文件中的内容
byte []b = new byte[100];
bufferedInputStream.read(b);
String string = new String(b, "UTF-8");
System.out.println(string);
//使用字符流读取文件中的内容
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
System.out.println(bufferedReader.readLine());
//写入文件
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
outputStreamWriter.write("jjjjjjjjjjjjjjjjjjjd我们哈哈哈哈哈");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
bufferedOutputStream.flush();
String string = "我们进顶顶顶顶顶顶顶顶顶大大大";
byte []b = string.getBytes("UTF8");
bufferedOutputStream.write(b);
bufferedOutputStream.close();
socket使用
Server
public class TcpServer {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String getString;
String sendString;
ServerSocket socket = new ServerSocket(6789);
while(true) {
Socket connection = socket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream() ));
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
getString = reader.readLine();
sendString = getString.toUpperCase() + "\n";
outputStream.writeBytes(sendString);
}
}
}
Client
public class TcpClient {
public static void main(String[] args) throws UnknownHostException, IOException {
String sendString;
String getString;
System.out.println("start connection");
Socket socket = new Socket("127.0.0.1", 6789);
System.out.println("connect successfully");
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
BufferedReader fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
sendString = "send to server from tcpclient";
outputStream.writeBytes(sendString + "\n");
getString = fromServer.readLine();
InputStream in = socket.getInputStream();
byte[] b = new byte[100];
in.read(b);
String string = new String(b, "UTF-8");
System.out.println(b);
socket.close();
}
}