Java学习笔记——Socket实现文件传输

我越是逃离,却越是靠近你。

我越是背过脸,却越是看见你。

我从你开始,

我在你结束。

需求:实现局域网下socket传输文件.

客户端步骤:

1、建立与服务器的连接

2、创建client输出流

3、创建输入流,绑定本地文件

4、读取文件后输出给服务器

服务器端步骤:

1、启动服务器

2、创建accept输入流

3、创建输出流绑定本地文件

4、读取客户端信息写入本地文件

1.字节流传输文件.

 1 public class Client {
 2
 3     public static void main(String[] args) throws IOException {
 4         Socket client = new Socket("192.168.0.112", 50000);
 5         OutputStream os = client.getOutputStream();
 6         FileInputStream fis = new FileInputStream("/home/yanshaochen/public/2017-05-06 15-12-02屏幕截图.png");
 7         byte[] bytes = new byte[1024];
 8         int data;
 9         while((data = fis.read(bytes))!= -1){
10             os.write(bytes, 0, data);
11         }
12         fis.close();
13         client.close();
14         System.out.println("发送成功!");
15     }
16 }
 1 public class Server {
 2
 3     public static void main(String[] args) throws Exception {
 4         ServerSocket server = new ServerSocket(50000);
 5         System.out.println("listening..");
 6         Socket accept = server.accept();
 7         InputStream is = accept.getInputStream();
 8         FileOutputStream fos = new FileOutputStream("d:\\download\\屏幕截图.png");
 9         byte[] bytes = new byte[1024];
10         int data;
11         while((data = is.read(bytes))!=-1){
12             fos.write(bytes, 0, data);
13         }
14         fos.close();
15         server.close();
16 }

2.字符流传输文件txt.

 1 public class Client {
 2
 3     public static void main(String[] args) throws IOException {
 4
 5         Socket client = new Socket("192.168.0.112", 50000);
 6         OutputStream os = client.getOutputStream();
 7         Reader fr = new FileReader("/home/yanshaochen/public/zfsm.txt");
 8         BufferedReader br = new BufferedReader(fr);
 9         String buffer;
10         while((buffer = br.readLine())!= null){
11             buffer += "\r\n";
12             os.write(buffer.getBytes());
13         }
14         br.close();
15         client.close();
16         System.out.println("发送成功!");
17     }
18 }
 1 public class Server {
 2
 3     public static void main(String[] args) throws Exception {
 4
 5         ServerSocket server = new ServerSocket(50000);
 6         System.out.println("listening..");
 7         Socket accept = server.accept();
 8         InputStream is = accept.getInputStream();
 9         FileWriter fw = new FileWriter("d:\\download\\zfsm.txt");
10         byte[] bytes = new byte[1024];
11         int data;
12         while((data = is.read(bytes)) != -1){
13             fw.write(new String(bytes, 0, data));
14         }
15         fw.close();
16         server.close();
17     }
18
19 }
时间: 2024-07-28 15:56:55

Java学习笔记——Socket实现文件传输的相关文章

JAVA学习笔记 -- 把资源文件打包到jar包

初学GUI,用Eclipse导出jar包,设定的最小化图标不能显示(hello.png文件放在项目的根目录下).代码如下: import javax.swing.JFrame; import java.awt.Toolkit; import java.awt.Image; import java.net.URL; public class GUITest { public static void main(String[] args) { JFrame frame = new JFrame();

Java学习笔记七(文件夹操作)

1.介绍 上一篇博客介绍的是java中常用的操作文件的方式,本篇博客着重讲解一下,在Java中是如何来操作文件夹的.主要是利用的是Java.IO包下面的File类,本篇博客着重讲解一下该类的构造函数和常用的方法. 2.File类的字段摘要 File类为我们提供了与系统有关的路径分割符,字段分别如下 static String pathSeparator:返回值为字符串,结果表示分号; static char pathSeparatorChar:返回值为char类型,结果表示分号 static c

Java学习笔记--字符串和文件IO

1.Java中的字符串类和字符的表示 2.区分String,StringBuilder和StringBuffer 3.从命令行中给main方法传递参数 4.文件操作 1 Java中的字符串和字符 1.1 String类 字符串就是由一系列的字符组成的序列,在很多语言中,比如C语言,将其存储在一个数组中.现在运用Java的思想,就要将字符串视为一个对象,其中Java规定的String类有11个构造方法,同时还有至少40种实现的方法,通过String类的学习,可以很好地了解面向对象的类和对象的思想.

java学习笔记16--I/O流和文件

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理设备之间的数据传输,对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中 输入/输出流可以从以下几个方面进行分类 从流的方向划分: 输入流.输出流 从流的分工划分: 节点流.处理流 从流的内容划分: 面向字符的流.面向字节的流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对

java学习笔记 第二篇 核心技术(二)

第十四章 集合类 集合类用来存放对象的引用.继承关系如下图: 14.1 Collection 接口 是层次结构中的根接口,构成Collection的单位称为元素.Collection接口不能直接使用,但该接口提供了添加元素.删除元素.管理数据的方法. Collection接口常用方法: 14.2 List 集合 包括List接口以及List集合的所有实现类.List集合中的元素允许重复,各元素循序就是对象插入的顺序 1.List接口,两个重要方法: get(int index): 获取指定索引位

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者

Java 学习笔记(2015.7.13~17)

Java 学习笔记(2015.7.13~17) Java this关键字 表示本类中的属性,调用本类中的方法 class Person {        private String name;         private int age;         public Person(String name, int age) {         this.name = name;//调用本类中的属性         this.age = age;//同上} //get&set方法:    

Java学习笔记——File类之文件管理和读写操作、下载图片

Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图片 文件和文件夹 相关函数 (boolean) mkdir() 创建此抽象路径名指定的目录  (boolean) mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录. (boolean) delete() 删除此抽象路径名表示的文件或目录 (boolean) createNe