⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java14.txt

📁 达内IT培训Core Java全部笔记 是学习Java编程的好东西
💻 TXT
字号:
xml(可扩展标记语言)File类1.File代表了文件和目录2.File类包括了所有的非IO的文件/目录操作1.new File(全路径):包括绝对路径和相对路径2.方法:新建createBweFile()		删除delete()		重命名renameTo()		List()->子文件+子目录		ListFiles()->文件数组		存在exists()		大小length()		文件名getName()		路径getPath()-----------------------------------------------------------------------------------------package com.tarena.day14.io;import java.io.File;import java.io.IOException;public class TestFile {	public static void main(String[] args) throws IOException {		File f1 = new File("/home/soft01/Desktop/");		if(f1.isDirectory()){		//无法确定不存在的file,对象是文件/目录			System.out.println("is directory");		}else if(f1.isFile()){			System.out.println("is file");		}		if(!f1.exists()){			f1.mkdirs();					//层层创建		}		//把f1下面所有文件都显示出来,不包括子目录		File[] temp1 = f1.listFiles();		for (int i = 0; i < temp1.length; i++) {			if(temp1[i].isFile()){				System.out.println(temp1[i]);			}		}		File.createTempFile("aaa", ".txt", f1);			//创建临时文件,前缀名必须要三个以上,而且临时文件会在前缀名后面跟上随机数		String[] temp = f1.list();		for (int i = 0; i < temp.length; i++) {			System.out.println(temp[i]);		}			}}-----------------------------------------------------------------------------------------		绝对路径和相对路径绝对路径很直观、清楚,但是很死板,对于代码移植上来说就很不方便相对路径代码移植性很好,做项目通常都用的是相对路径相对路径有以下三个问题需要解决:	1./ \在不同系统下的区别:SUN支持Linux下的"/"通用(在windows下也可以用C:/),还可用File.saperator自动变化分割符	2.相对路径的根:	3.如果进退目录-----------------------------------------------------------------------------------------package com.tarena.day14.io;import java.io.File;public class TestPath {	public static void main(String[] args) {		File f = new File("./");		System.out.println(f.getPath());		System.out.println(f.getName());		String[] st = f.list();		for (String s : st) {			System.out.println(s);		}//相对路径不能跨盘符(在Windows下不能C盘找D盘)		File ff = new File("../../abc.txt");			if (ff.exists()) {			System.out.println("ok");					}	}}-----------------------------------------------------------------------------------------Serializable:如果对象想要在流中传递,就要实现对象序列化,否则无法传递做一个类的时候:1.写无参构造(子类,反射)2.实现序列化接口3.是否重写equals和HashCode能被序列化的1.包名2.类名3.属性是个递归,会把所有属性下的属性都序列化不能被序列化的方法和构造-----------------------------------------------------------------------------------------package com.tarena.day14.ser;public class Person implements java.io.Serializable{	private static final long serialVersionUID = 1L;			private String name;			private int age;			private String nations;			private transient String sex;	//加入关键字transient该属性就不会被序列化			private static Object obj; //Objject没有实现任何接口//static是类级别的,不是对象,所以不能被序列化						public int getAge() {				return age;			}			public void setAge(int age) {				this.age = age;			}			public String getName() {				return name;			}			public void setName(String name) {				this.name = name;			}			public String getNations() {				return nations;			}			public void setNations(String nations) {				this.nations = nations;			}			public Object getObj() {				return obj;			}			public void setObj(Object obj) {				this.obj = obj;			}			public String getSex() {				return sex;			}			public void setSex(String sex) {				this.sex = sex;			}			}-----------------------------------------------------------------------------------------package com.tarena.day14.ser;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;public class WriteObject {	public static void main(String[] args) throws IOException {		FileOutputStream fos = new FileOutputStream("../../person.tmp");		ObjectOutputStream oos = new ObjectOutputStream(fos);		Person p = new Person();		p.setName("zhang");		p.setAge(23);		p.setNations("han");		p.setSex("man");		oos.writeObject(p);		oos.close();	}}-----------------------------------------------------------------------------------------package com.tarena.day14.ser;import java.io.FileInputStream;import java.io.ObjectInputStream;public class ReadObject {	public static void main(String[] args) throws Exception {		FileInputStream fis = new FileInputStream("../../person.tmp");		ObjectInputStream ois = new ObjectInputStream(fis);		Person p = (Person)ois.readObject();		ois.close();		System.out.println(p.getName()+","+p.getAge()+"," +p.getSex()+","+p.getNations());			}}-----------------------------------------------------------------------------------------对象序列化是针对对象进行,不是针对声明类型,会对所有的属性(包括属性的属性)递归序列化(有些属性例外)static 属性不会被序列化transient 关键字保护敏感属性不被序列化1.对象序列化解决的就是保证对象在流中正确的传递2.类名,包名,非static/非transient 的属性会被序列化3.方法和构造不能被序列化,还有static/transient 的属性无法序列化 4.serialVersionUID(long)解决序列化版本冲突问题NETWORK(网络)http超文本传输协议ftp文件传输协议telnet远程登录pop3邮件协议TCP传输协议(TCP/IP)UDP用户数据报协议Sokect:套接字,就是带一个IP+端口Server Socket为服务器端服务,只负责客户连接,不负责交互Sokect负责交互-----------------------------------------------------------------------------------------package com.tarena.day14.net;import java.io.DataInputStream;import java.io.DataOutputStream;import java.net.ServerSocket;import java.net.Socket;public class TestServer {	public static void main(String[] args) throws Exception{		ServerSocket ss = new ServerSocket(7456);		System.out.println("begin");		Socket so = ss.accept();	//返回Socket类型		System.out.println("end");		//客户端与服务器端要注意读写一致,一读一写		DataInputStream dis = new DataInputStream(so.getInputStream());		DataOutputStream dos = new DataOutputStream(so.getOutputStream());		String temp = dis.readUTF();		dos.writeUTF("server:"+temp);		dis.close();		dos.close();		so.close();		ss.close();	}}-----------------------------------------------------------------------------------------package com.tarena.day14.net;import java.io.DataInputStream;import java.io.DataOutputStream;import java.net.Socket;public class TestClient {	public static void main(String[] args) throws Exception {		Socket so = new Socket("127.0.0.1",7456);		DataInputStream dis = new DataInputStream(so.getInputStream());		DataOutputStream dos = new DataOutputStream(so.getOutputStream());		dos.writeUTF("Hello");		System.out.println(dis.readUTF());		dis.close();		dos.close();		so.close();	}}-----------------------------------------------------------------------------------------作业:1.复习前边的内容,多看笔记,代码2.把文件分割器完成3.分版本,写一个基于字符界面的聊天软件	a 引入键盘输入流(只在客户端),能无限次的输入(加入while(true)循环,除非客户输入"bye")	b 服务器要能为多次连接服务(串行),accept()要放入死循环(此时SS不需要close())	c 利用线程实现并行,多人同时连接/说话(服务器),但是不需要多人交互	d 把多人说的话统一放入同一个变量,发变量,就实现了多人的聊天

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -