- 文件(File类)
- 字节流
- 字符流
- file:
package com.zrm.file;
import org.junit.Test;
import java.beans.Transient;
import java.io.File;
import java.io.IOException;
public class FileTest1 {
static void setFile() throws IOException {
//创建多个文件方便进行操作
for (int i = 0; i < 5; i++) {
//创建一个文件对象
File file = new File("h:\\file" + i + ".txt");
//创建对应的文件
file.createNewFile();
}
File file = new File("h:\\file0.txt");
//删除文件
file.delete();
//创建一个文件夹对象
File dir = new File("h:\\java");
//创建文件夹
dir.mkdir();
}
public static void main(String[] args) throws IOException {
FileTest1.setFile();
}
}
常用的方法:
在程序和文件进行读写的时候,以程序为主体,input,output
fileoutputstream:
package com.zrm.io;
import org.junit.Test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class IoTest {
/**
* 往文件中写东西
*/
@Test
public void write2File() throws IOException {
//先创建一个我们所需的文件吧
File file = new File("h:\\test01.txt");
file.createNewFile();
// //从键盘输入内容写到文件里面
// Scanner scn = new Scanner(System.in);
// System.out.println("请输入录入信息:");
// String str = scn.nextLine();
String str = "here";
//创建我们现在java程序和文件之间的供字节流通过的连接管道
FileOutputStream fos = new FileOutputStream(file);
//开始从程序端往文件写内容
fos.write(str.getBytes());
//关闭程序和文件之间的连接
fos.close();
}
}
package com.zrm.io;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class InputS {
//从文件中读取数据到程序
@Test
public void read2Java() throws Exception {
//创建文件对象
File file = new File("h:\\java.txt");
//创建输入对象,并且跟文件建立连接
FileInputStream fileInputStream = new FileInputStream(file);
//读取数据
fileInputStream.read();//此方法每次只能读取一个字节,如果没有数据被读取时返回-1
//读取并输出文件中的内容
int len = 0;
while ((len = fileInputStream.read()) != -1) {
System.out.println((char) len);
}
//关闭连接
fileInputStream.close();
}
}
实现实例:
package com.zrm.io;
import org.junit.Test;
import java.io.*;
/**
* 使用BufferedInputStream,BufferedOutputStream是对FileInputStream和FileOutpurStream
* 字节流的处理,来完成对机器中文件的复制
*/
public class Copy_Buffered {
@Test
public void buffered1() throws Exception {
//创建连接
FileInputStream fis = new FileInputStream("c:\\java.mp4");
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("h:\\java.mp4");
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] bytes = new byte[1024];//缓存的容量
int len = 0;
while ((len = bis.read(bytes)) != -1) {
//写入数据
bos.write(bytes, 0, len);
}
//关闭输入流
bis.close();
fis.close();
//关闭输出流
bos.close();
fos.close();
}
}
对象流,序列化
package com.zrm.io;
import org.junit.Test;
import java.io.*;
class Student implements Serializable {
private static final long serialVersionUID;
static {
serialVersionUID = 0;
}
public String name;
public int age;
public int id;
public int account;
public Student(String name, int age, int id, int account) {
this.name = name;
this.age = age;
this.id = id;
this.account = account;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", id=" + id +
", account=" + account +
'}';
}
}
public class ObjeStream {
/**
* 对象流;
* 序列化:将对象流化,也就是将对象转换成字节
* 序列化ID:序列化需要实现Serializable接口,每个实现接口的类都有一个序列号
*/
@Test
public void objectStream() throws Exception {
//写一个对象到文件中
FileOutputStream fos = new FileOutputStream("h:\\java.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
//创建实例化一个对象
Student student = new Student("zrm", 12, 233, 12);
//写入
oos.writeObject(student);
System.out.println("success");
//从文件读取对象
FileInputStream fis = new FileInputStream("h:\\java.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
//读取操作
Student st = (Student) ois.readObject();
System.out.println(st.toString());
//关闭输入输出流
ois.close();
fis.close();
oos.close();
fos.close();
}
}