欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > BufferedReader读取视频、图片缺失及readLine()使用

BufferedReader读取视频、图片缺失及readLine()使用

2025/2/24 19:14:38 来源:https://blog.csdn.net/java_cjl/article/details/103623840  浏览:    关键词:BufferedReader读取视频、图片缺失及readLine()使用

  题目:从本地读取图片,通过Socket由服务器发送给客户端,客户端重命名图片,保存到当前路径。
  使用BufferedReader字符流操作,发现图片获取失败,查了一下做个小结。

参考文件
https://bbs.csdn.net/topics/370110335
https://www.cnblogs.com/dongrilaoxiao/p/6688107.html

/*** @author Administrator* @version 1.0 ** 创建一个多线程的TCP 服务器以及客户端,完成下面的功能: 服务端:读入客户端发给* 服务器端的字符串,在服务器当前目录下查找以该字符串作为文件名的文件,并把该文* 件内容发送给客户端。客户端:发送给服务器端一个字符串filename 表示服务器上的* 一个文件,然后 从服务器端读入文件内容,并起名叫server_filename 保存在当前* 目录。*/
public class FileThreadServer {public static void main(String[] args){ExecutorService es = Executors.newCachedThreadPool();ServerSocket listener = null;Socket socket = null;try {listener = new ServerSocket(7788);System.out.println("服务器已启动");while (true) {socket = listener.accept();es.submit(new FileThread(socket));}} catch (IOException e) {e.printStackTrace();}finally {try {if(socket != null)socket.close();if(listener != null)listener.close();if(es != null)es.shutdown();} catch (IOException e) {e.printStackTrace();}}}
}class FileThread implements Runnable{private Socket socket;public FileThread() {}public FileThread(Socket socket) {this.socket = socket;}public Socket getSocket() {return socket;}public void setSocket(Socket socket) {this.socket = socket;}@Overridepublic void run() {BufferedReader br = null;BufferedOutputStream bos = null;BufferedInputStream bis = null;try {InputStream is = socket.getInputStream();br = new BufferedReader(new InputStreamReader(is));//接收客户端发送的文件名String fileName = br.readLine();System.out.println("fileName:"+fileName);//当前目录查找文件是否存在boolean fileExistResult = checkFile(fileName);if(fileExistResult){OutputStream os = socket.getOutputStream();bos = new BufferedOutputStream(os);//将文件写到E盘bis = new BufferedInputStream(new FileInputStream(new File("e:\\"+fileName)));int len = 0;byte[] b = new byte[1024*4];//使用缓冲字节流读取写入while((len = bis.read(b))!=-1){bos.write(b, 0, len);}bos.flush();System.out.println("服务器发送数据完毕");}} catch (IOException e) {e.printStackTrace();}finally {try {if(br != null)br.close();if(bis != null)bis.close();if(bos != null)bos.close();} catch (IOException e) {e.printStackTrace();}}}public boolean checkFile(String fileName){File file = new File("e:\\");if(!file.exists()){System.out.println("搜索路径存在问题,无法查找");return false;}File[] files = file.listFiles();if(files == null){return false;}for (File f : files) {if(f.getName().equals(fileName)){return true;}}return false;}
}
/*** @author Administrator* @version 1.0**  创建一个多线程的TCP 服务器以及客户端,完成下面的功能: 服务端:读入客户端发给服*  务器端的字符串,在服务器当前目录下查找以该字符串作为文件名的文件,并把该文件内*  容发送给客户端。客户端:发送给服务器端一个字符串filename 表示服务器上的一个文*  件,然后 从服务器端读入文件内容,并起名叫server_filename 保存在当前目录。*/
public class FileClient {public static void main(String[] args){Socket socket = null;BufferedWriter bw = null;BufferedInputStream bis = null;BufferedOutputStream bos = null;try {socket = new Socket("127.0.0.1", 7788);bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write("ascii.jpg");bw.newLine();bw.flush();System.out.println("客户端发送文件名完毕");bis = new BufferedInputStream(socket.getInputStream());bos = new BufferedOutputStream(new FileOutputStream(new File("d:\\server_ascii.jpg")));int len = 0;byte[] b = new byte[1024*4];while((len = bis.read(b)) != -1){bos.write(b, 0, len);}bos.flush();System.out.println("客户端保存文件完毕");} catch (IOException e) {e.printStackTrace();}finally {try {if(bw != null)bw.close();if(bis != null)bis.close();if(bos != null)bos.close();if(socket != null)socket.close();} catch (IOException e) {e.printStackTrace();}}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词