1.File类
关于他的删除:他只能在没有子文件或目录的时候才可以删除(如上图filetext还有子目录),运行之后filetext还在.
有一个方法来删除(不用考虑有无子文件),迭代(慎用迭代多次效率太低)
import java.io.File;
public class wenJian {
public static void kk(File file) {
//删除文件
if (file.isFile()) {
file.delete();
} else {
//判断是否有子目录
File[] files = file.listFiles();
if (files!=null){
for (File file1 : files) {
kk(file1);
}
//删除目录
file.delete();
}
}
}
public static void main(String[] args) {
File field = new File("D:/text");
wenJian.kk(field);
}
}
2.IO
节点流
FileInputStream(字节输入流),FileOutputStream(字节输出流),FileReader(字符输入流),FileWriter(字节输出流)
有关于复制粘贴
package com.fs.liu;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class SteamText {
public static void ctrlcv(String yuan, String mu) {
FileOutputStream out=null;
FileInputStream input=null;
try {
out = new FileOutputStream(yuan);
input = new FileInputStream(mu);
int sc = -1;
//-1表示读到文件末尾
while ((sc=input.read())!= -1) {
out.write(sc);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ctrlcv("D:/text","D:");
}
}
缓冲流
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
有关于复制粘贴
package com.fs;
import java.io.*;
public class bufferread {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter=null;
FileReader fileReader = null;
FileWriter fileWriter = null;
try {
fileReader = new FileReader("D:\\text\\ff.txt");
bufferedReader = new BufferedReader(fileReader);
fileWriter = new FileWriter("D:\\text1\\kk.txt");
bufferedWriter =new BufferedWriter(fileWriter);
String fd = null;
while ((fd = bufferedReader.readLine()) != null) {
bufferedWriter.write(fd);
bufferedWriter.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
fileReader.close();
bufferedReader.close();
fileWriter.close();
File file = new File("D:\\text\\ff.txt");
file.delete();
}
}
}
BufferedWriter是缓冲输入流,意思是调用BufferedWriter的write方法时候。数据是先写入到缓冲区里,并没有直接写入到目的文件里。必须调用BufferedWriter的flush()方法。这个方法会刷新一下该缓冲流,也就是会把数据写入到目的文件里,不用flush()方法的话用read读不到内容。
对象流
Student类
package com.fs;
import java.io.Serializable;
public class Student implements Serializable {
private String name;
private transient String possword;
private int age;
public Student(String name, String possword, int age) {
this.name = name;
this.possword = possword;
this.age = age;
}
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPossword() {
return possword;
}
public void setPossword(String possword) {
this.possword = possword;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", possword='" + possword + '\'' +
", age=" + age +
'}';
}
}
序列化
package com.fs;
import java.io.*;
public class Xu {
public static void main(String[] args) {
Student stu1=new Student("张三","123456",45);
Student stu2=new Student("李四","123456",12);
Student stu3=new Student("王五","123456",33);
ObjectOutputStream oos = null;
{
try {
oos = new ObjectOutputStream(new FileOutputStream("D:\\text\\lk.txt"));
oos.writeInt(3);
oos.writeObject(stu1);
oos.writeObject(stu2);
oos.writeObject(stu3);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(oos!= null) oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
反序列化
package com.fs;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.List;
public class FanXu {
public static void main(String[] args) throws IOException {
ObjectInputStream ois = null;
List list=new ArrayList();;
try {
ois = new ObjectInputStream(new FileInputStream("D:\\text\\lk.txt"));
Object obj = null;
int i = ois.readInt();
for (int j = 0; j < i ; j++) {
Student stu = (Student) ois.readObject(); //反序列化
System.out.println(stu);
list.add(stu);
}
System.out.println(list);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
结果
oos.writeInt(3)相当于对象创建方把创建对象的数量告诉read与 int i = ois.readInt();
3.网络
实现本地一个简单本地通信原理图
客户端
package com.fs.network;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class KuHu {
public static void main(String[] args) {
Socket socket=null;
InputStream inputStream = null;
OutputStream outputStream=null;
try {
socket=new Socket("localhost",9090);
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
String xi="是客户3t3t3t3t3t";
byte[] bytes = xi.getBytes();
outputStream.write(bytes);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
socket.close();
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务器端
package com.fs.network;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class FuWu {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
ServerSocket serverSocket = null;
try {
System.out.println("服务器启动...");
serverSocket = new ServerSocket(9090);
Socket socket = serverSocket.accept();
System.out.println("服务器启动成功");
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
byte[] bytes = new byte[1024];
inputStream.read(bytes);
String s = new String(bytes);
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
serverSocket.close();
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
此时客户发送一个信息(是客户3t3t3t3t3t),服务器接收到