java流处理是IO环节避不开的话题,Java语言本身提供流一系列的类支持字节流的读写,我们今天来看看。

场景一,读取一个文件内的内容
这时候通常做法是
使用FileInputStream封装了一个File文件,然后调用read方法一个字节一个字节的读出来;当然也可以一次性读取多个字节,将数据读到字节数组里面。最后一定要记得close这个inputStream.
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("以字节为单位读取文件内容,一次读一个字节:");
// 一次读一个字节
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.out.println("以字节为单位读取文件内容,一次读多个字节:");
// 一次读多个字节
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
场景二,socket连接读取数据
服务端代码
先不管代码对错,也没有bug,从socket获取inputStream,在用InputStreamReader封装,外层用BufferedReader封装,这样就是一个reader了。
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
System.out.println("启动服务器....");
Socket s = ss.accept();
System.out.println("客户端:"+s.getInetAddress().getLocalHost()+"已连接到服务器");
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//读取客户端发送来的消息
String mess = br.readLine();
System.out.println("客户端:"+mess);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(mess+"\n");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
本文深入探讨了Java流处理技术,包括如何使用FileInputStream读取文件内容,支持字节流的读写操作,以及通过socket连接进行数据读取的方法。文章提供了具体的代码示例,展示了以字节为单位读取文件的两种方式,并介绍了socket服务端的数据接收流程。

1273

被折叠的 条评论
为什么被折叠?



