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的IO流 和网络编程 超详细每行代码都有备注相关推荐
- Java的IO流与网络编程
目录 一.概述 二.文件类(File) 1. File类的构造.获取属性 2. File类获取子文件或目录 3. File类文件重命名 4. File类的判断功能 5. File类创建.删除功能 三. ...
- Java的IO模型基于网络编程利弊分析
JAVA的IO模型基于网络编程利弊分析 一.IO通俗理解 IO的过程 思考①答案:文件句柄 思考②答案: 阻塞/非阻塞 IO(程序对内核空间数据拷贝到用户空间阶段的耗时操作的等待方式) 同步/异步IO ...
- java基础知识总结:基础知识、面向对象、集合框架、多线程、jdk1.5新特性、IO流、网络编程
目录 一.基础知识: 二.面向对象 三.集合框架 四.多线程: 五.jdk1.5的新特性 六.IO流 七.网络编程: 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtua ...
- 泛型、IO流 和 网络编程
文章目录
- 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流
Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...
- java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...
- Java中IO流,输入输出流概述与总结(转载自别先生文章)
Java中IO流,输入输出流概述与总结 总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都 ...
- Java入门——IO流
一.File类的使用 1.1 File类的实例化 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File 能新建.删除.重命名文件和目录,但File 不能访问文件内容本身. ...
- # Java基础——IO流
Java基础--IO流 File类的使用(熟悉构造器和方法的使用) File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) File类的声明在java.io包下 文件和文件目录路径的抽象表示 ...
最新文章
- 第十六周程序阅读(5)
- Selenium_python自动化环境搭建篇
- 人类能与人工智能共生吗?马斯克设想的“人脑接口”,是否可行?
- 清华硕士面试阿里惨遭淘汰,网友:并非所有都是强者,也要看人
- 提交mysql代码_MySQL源码之两阶段提交
- SAP 电商云 Spartacus UI SSR 里 engine 和 engine instance 的区别
- c盘users的用户名怎么改_怎么修改iPhone备份文件夹路径 iPhone C盘路径修改教程【详解】...
- SpringBoot:如何处理SprintBoot提示Whitelabel Error Page以及了解原因?
- java 跳转虚拟目录_java tomcat虚拟目录的深入了解
- 扫地机器人的特点描写_扫地机器人的特点是什么
- zb怎么做渲染图_如何在ZBrush中渲染漫画风格的插画
- 别墅客厅吊顶怎么做?有哪些注意事项?
- 苹果的困境源于优质移动应用的垮台吗?
- codeblocks16.01 中配置Opencv3 姿势
- 无锡公交也有两套支付
- mysql+enable+sql+log_MySQL -- redolog + binlog
- 什么是十六进制法_十六进制的定义 十六进制的转换介绍【详解】
- 云计算机玩端游,拒绝万元显卡 云电脑玩端游又爽又省钱
- Python基础入门:(一)从变量到异常处理 --阿里云天池
- ebp/栈帧/call stack
热门文章
- python基础 推导式
- Altium Designer 20 19(入门到精通全38集)四层板智能车PCB设计视频教程AD19 AD20 凡亿----笔记
- 测试用例、测试流程模型、测试方法详解 超详细分解
- 【易康教程】遥感自动解译精度评价-Kappa系数计算等
- 【C#/.NET】record介绍
- matmul torch 详解_[pytorch] 通过一个例子分析torch.matmul矩阵与向量相乘的维度
- 本博客已废弃。目前迁移至 http://www.sunzhongwei.com 大象笔记
- c bool类型函数
- Qt 的 icon图标设置
- pwnable.rk [Toddler‘s Bottle] 5、passcode 详细过程