File file = new File("net-app\\src\\com\\itheima\\d10\\16-扩展案例-群聊.mp4"); System.out.println(file.length()); Scanner sc=new Scanner(System.in); String s = sc.nextLine(); FileInputStream fileInputStream = new FileInputStream(file); BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); Socket socket = new Socket("127.0.0.1",10086); OutputStream outputStream = socket.getOutputStream(); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); byte[] bytes=new byte[1024*8]; int read; while ((read = bufferedInputStream.read(bytes))!=-1){ System.out.println(read); bufferedOutputStream.write(bytes,0,read); } bufferedInputStream.close(); bufferedOutputStream.close();
时间: 2024-03-30 15:37:48 浏览: 127
这段代码是一个简单的网络文件传输的客户端代码。该代码首先创建一个File对象,指定要传输的文件路径,并使用length()方法获取该文件的大小。然后通过Scanner类等待用户输入任意字符,进一步控制文件传输操作的进行。接下来使用FileInputStream获取该文件的输入流,再通过BufferedInputStream包装一下,就可以读取文件内容了。然后创建一个Socket对象,连接到指定的服务器IP地址和端口号(这里是127.0.0.1:10086),并通过Socket的getOutputStream()方法获取输出流,再通过BufferedOutputStream包装一下,就可以将读取到的文件内容写入到Socket的输出流中,实现文件的传输。需要注意的是,这个代码只能传输小文件,如果传输的文件较大,则需要采用分段传输的方式,否则会发生内存溢出。
相关问题
File file = new File("net-app\\src\\com\\itheima\\d10\\16-扩展案例-群聊.mp4"); System.out.println(file.length()); Scanner sc=new Scanner(System.in); String s = sc.nextLine(); //本地输入流 FileInputStream fileInputStream = new FileInputStream(file); BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); //socket管道 Socket socket = new Socket("127.0.0.1",10086); Mythread mythread = new Mythread("子线程",socket,bufferedInputStream); //子线程开始执行 System.out.println("开始"); mythread.start();
这段代码使用了以下类和方法:
- File类的构造方法和length()方法,用于获取指定文件的大小;
- Scanner类的构造方法和nextLine()方法,用于从标准输入流中读取用户输入的字符串;
- FileInputStream类和BufferedInputStream类的构造方法,用于读取本地文件的输入流并进行缓冲操作;
- Socket类的构造方法,用于创建与指定IP地址和端口号的服务器建立的网络连接;
- Mythread类的构造方法和start()方法,用于创建并启动一个自定义的线程。
File file = new File("D:\\HeimaIT\\OtherData\\lycode\\javaee\\net-app\\src\\com\\itheima\\d10\\16-扩展案例-群聊.mp4"); System.out.println(file.length()); Scanner sc=new Scanner(System.in); String s = sc.nextLine(); FileInputStream fileInputStream = new FileInputStream(file); BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); Socket socket = new Socket("127.0.0.1",10086); OutputStream outputStream = socket.getOutputStream(); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); byte[] bytes=new byte[1024*8]; int read; while ((read = bufferedInputStream.read(bytes))!=-1){ System.out.println(read); bufferedOutputStream.write(bytes,0,read); } bufferedInputStream.close(); bufferedOutputStream.close();
这是一个Java程序段,可以向IP地址为127.0.0.1,端口号为10086的Socket服务器发送一个名为“群聊.mp4”的文件。程序首先创建一个文件对象,然后获取文件的大小并打印出来。接着,程序创建一个Scanner对象获取用户的输入,然后使用文件输入流和缓冲输入流读取文件数据,并将文件数据写入到Socket的输出流中。程序使用一个byte数组缓存读取的数据,并使用一个while循环不断地将数据写入到Socket的输出流中,直到读取完整个文件。最后,程序关闭文件输入流、缓冲输入流和缓冲输出流。
阅读全文