IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JAVA的IO流 和网络编程 超详细每行代码都有备注 -> 正文阅读

[Java知识库]JAVA的IO流 和网络编程 超详细每行代码都有备注

IO流:
{
??? 文件的操作: f1.getAbsolutePath();//获取绝对路径
????????????? f1.getPath();//获取相对路径
????????????? f1.getName();//获取名称
????????????? f1.getParent();//获取上层目录路径 无返回null
????????????? f1.length();获取文件长度(字节数)
????????????? f1.lastModified();//获取最后修改时间,毫秒值

????????????? f1.isDirectory();//判断是否为文件目录(就是里面还有值)
????????????? f1.isFile() ;// 判断是否是文件
????????????? f1.exists(); //判断文件是否存在
????????????? f1.canRead(); //判断是否可读
????????????? f1.canWrite(); //判断是否可写
????????????? f1.isHidden(); //判断是否隐藏
????????????? f1.createNewFile(); //创建文件如果此文件不存在了就返回true 注意是创建文件其他都是创建文件夹
????????????? f1.mkdir();? //创建文件夹如果文件夹存在就不创建
????????????? f1.delete(); //删除f1文件路径下的文件
????????????? f2.mkdirs();//创建文件夹如果文件夹不存在就不创建 如果路径不存在就创造路径

????????????? File f4=new File("D:java1");
????????????? String[] list = f4.list(); //获取该目录下的所有文件
????????????? File[] file=f4.listFiles();//获取指定目录下的所有文件目录带c://

????????????? FileSystemView fsv = FileSystemView.getFileSystemView();
????????????? File com=fsv.getHomeDirectory();??? //获取桌面路径

????? int len;? byte[] by=new byte[1024]??? while ((a1=b1.readLine())!=null)? { b2.write(by,0,len); } //数据的读写代码
???? *字符流(文本操作):
???????????? FileReader f1=new FileReader("tt1.txt");? //写出流
???????????? FileWriter f2=new FileWriter("tt1.txt",true); //第2个如果为true那么就是往后追加 如果为flase就覆盖着写 写出的时候不存在会自动创建? 读入流

???? *字节流(图片,视频操作):
???????????? FileInputStream f3=new FileInputStream("tt1.txt");?? //字节写出
???????????? FileOutputStream f4=new FileOutputStream("tt1.txt",true); //字节读入

???? 缓冲流(增加速度):
???????????? BufferedReader b1=new BufferedReader(new FileReader(f1));//缓冲写出流(文本文件)
???????????? BufferedWriter b2=new BufferedWriter(new FileWriter(f2));//缓冲读入流(文本文件)

???????????? BufferedInputStream cin=new BufferedInputStream(new FileInputStream(f3)); //缓冲写出流 (图片,视频操作)
???????????? BufferedOutputStream cout=new BufferedOutputStream(new FileOutputStream(f4));//缓冲读入流 (图片,视频操作)

???? 转换流(字节转字符<——>字符转字节):
????????????? InputStreamReader n1=new InputStreamReader(new FileInputStream(f3),"UTF-8"); //? 默认字符为系统自己设置 字节流-->字符流

????????????? InputStreamReader cin=new InputStreamReader(new FileInputStream(f3),"utf-8"); //以utf-8的方式写出? 字符流-->字节流
????????????? OutputStreamWriter cout=new OutputStreamWriter(new FileOutputStream(f4),"gbk"); //以gbk的方式读入? 字符流-->字节流

???? 可读可写的(RandomAccessFile)流:
??????????????? RandomAccessFile r1=new RandomAccessFile(new File("图9.jpg"),"r"); //只读的方式? 写出文件
??????????????? RandomAccessFile r2=new RandomAccessFile(new File("图10.jpg"),"rw"); //可写出可读入的方式 读写文件

??????????????? RandomAccessFile r3=new RandomAccessFile(new File("f1.txt"),"rw"); //可读可写的方式 操作txt类型文件
??????????????? r3.seek(3);//吧指针移动读出位置的第3个地方
??????????????? r2.write("abcd".getBytes()); //覆盖操作写是从头开始覆盖 原来是 1235678wqert? 覆盖前面之后操作完成;abcd5678wqert

???? 不可打开的文件类(ByteArrayOutputStream)流用于网络编程:
??????????????? ByteArrayOutputStream baos=new ByteArrayOutputStream(); //用来写入字符和字节文件

???? 标准输入控制台(了解就行):
????????????? InputStreamReader isr=new InputStreamReader(System.in);//标准从键盘读入
????????????? BufferedReader br=new BufferedReader(isr); //流包起来
????????????? String data= br.readLine();//数据读出
???????????? 输出:
????????????? FileOutputStream fos=new FileOutputStream(new File("ff2_xg.txt"));
????????????? PrintStream ps=new PrintStream(fos,true);//true代表覆盖操作
????????????? System.setOut(ps); //修改打印流吧打印出去的地方修改成输入到文件里面

?????? 流操作最后都必须执行 f1.close //流关闭操作

}

网络编程:TCP UDP URL
{?? 获取传输过来的IP地址:sockt.getInetAddress().getHostAddress();

????? InetAddress inet1=InetAddress.getByName("127.0.0.1");????? //写入ip地址? 返回?? /127.0.0.1
???????????????????????? InetAddress.getByName("www.baidu.com"); //写入域名??? 返回:? www.baidu.com/112.80.248.76
???????????????????????? InetAddress.getByName("localhost");???? //写入本机??? 返回:? localhost/127.0.0.1 本机地址
???????????????????????? InetAddress.getLocalHost() ;??????????? //写入本机??? 返回:? dzqdb1 /192.168.159.1 我现在电脑所对应局域网中的ip地址和名字
???????????????????????? InetAddress.getByName("dzqdb1") ;?????? //写入本机名字 返回:? dzqdb1 /192.168.159.1 通过名字查找ip地址
?????? 吧域名和名字分开:
??????? System.out.println("5号的名字为:"+inet5.getHostName());????? //获取名字
??????? System.out.println("5号的ip地址为:"+inet5.getHostAddress()); //获取ip地址
?????
?????
?????

??? TCP网络编程(传输文字):三次握手,四处挥手保证数据的传输稳定性
??????? 客户端:
???????? Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),4444); //传输进来服务端的ip地址和端口号
???????? OutputStream os = socket.getOutputStream(); //传输字节读入流
???????? os.write("你好啊".getBytes());??? //数据传输到服务器? getBytes() 转换成byte字节流
????????? socket.shutdownOutput();//告知服务器我数据已经传输完了,不在输出数据了? 不写此语句导致服务器端一直等待客户端做出回应
???????? socket.close();//关闭连接
???????? os.close();//关闭文件流

??????? 服务端:
??????? ServerSocket ss = new ServerSocket(9999);//自己服务器的地址
??????? Socket sockt=ss.accept(); //(写出获取)接收来自客服端的sockt数据 有线程阻塞必须得等到数据传输进来之后才会往下执行
???????????? InputStream is = sockt.getInputStream();? //(读入)传输进来的数据
???????????? System.out.println("收到了来自于"+sockt.getInetAddress().getHostAddress()");//获取传输过来的ip地址
???????????? ByteArrayOutputStream baos=new ByteArrayOutputStream();//吧所有字符串都读取进来然后读取完成之后再拼接成一个字符串
????????????? byte[] buff=new byte[5];
????????????? int len;
???????????? while((len= is.read(buff))!=-1)
???????????? {
???????????????? baos.write(buff,0,len);
???????????? }
??????????? System.out.println(baos.toString());//吧传输过来的字节流打印出来
??????????????? is.close(); //读入关闭
??????????????? sockt.close();//关闭接收数据
??????????????? baos.close(); //关闭流
??????????????? ss.close(); //关闭服务器

??? TCP网络编程(传输图片.视频等):
????????? 客户端:
?????????? Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),4444); //服务端的ip地址,端口
?????????? OutputStream out = socket.getOutputStream();//输出流
?????????? FileInputStream stream = new FileInputStream(new File("C:\\Users\\hbl\\Desktop\\lo流\\图9.jpg"));//需要读取的文件
?????????? byte[] by=new byte[1024];
?????????? int len;
?????????? while((len=stream.read(by))!=-1)
?????????? {
?????????????? out.write(by,0,len);
?????????? }
??????????? socket.shutdownOutput();//告知服务器我数据已经传输完了,不在输出数据了? 不写此语句导致服务器端一直等待客户端做出回应
??????????? //关闭操作

??????? 服务端:
????????? ServerSocket ss = new ServerSocket(9999);//自己服务器的地址
????????? Socket sockt=ss.accept(); //接收来自客服端的sockt数据
????????? InputStream is = sockt.getInputStream();? //读入传输进来的数据 (图片和视频版)

????????? byte[] buff=new byte[5];
????????? int len;
????????? ByteArrayOutputStream baos=new ByteArrayOutputStream();//吧所有字符串都读取进来然后读取完成之后再拼接成一个字符串
????????? while((len= is.read(buff))!=-1)
????????? {
????????????? baos.write(buff,0,len);
????????? }
????????? System.out.println(baos.toString());//输出
????????? //关闭流操作

????????? 服务端回应数据操作:
?????????????? 回应数据(在代码后面写):
????????????????? OutputStream os=accept1.getOutputStream();
????????????????? os.write("数据我已经收到,非常好看!".getBytes());//转换字节发送给服务器

????????? DatagramSocket socket=new DatagramSocket(); //连接使用UDP方式

??? 使用UDP网络格式发送数据:(不管对方有没有接收到都吧包发给对方)
??????? 客户端:
??????????? DatagramSocket socket=new DatagramSocket(9999); //指定端口号
??????????????????? byte[] buffer=new byte[100];
??????????????????? DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length); //接收数据
??????????????????? socket.receive(packet);//等待数据传输过来接收数据
??????????????????? System.out.println(new String(packet.getData(),0,packet.getLength())); //第一个是数据,第2个是从哪里开始,第三个是数据的长度

??????????????????? socket.close();

???????? 服务端:
???????????????? DatagramSocket socket=new DatagramSocket(); //连接使用UDP方式
????????????????? String str="我是以UDP方式发送的导弹";
????????????????? byte[] data=str.getBytes(); //转换成字节流

????????????????? DatagramPacket packet=new DatagramPacket(data,0,data.length,InetAddress.getByName("127.0.0.1"),9999);
????????????????? // 封装的数据包???????????????????????????? 发送的文件/从哪开始发/到那结束发送?? 服务器ip地址、端口号

????????????????? socket.send(packet); //发送数据包
????????????????? socket.close();//关闭发送


?

}























?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:12:16  更:2021-11-22 12:14:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:56:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码