创建文件
//G:\javastudy\day1\src\main\java\day8
String path ="G:/javastudy/day1/src/main/java/day8";
File file = new File(path.concat("/1.text"));
if(file.exists() == false){
file.createNewFile();
}
读取文件的内容
I/O流
流 统一管理数据的写入和读取
流的方向 参考的是自己的内存空间
- 输出流
- 从内存空间将数据写到外部设备
- 开发者只需要将内存里面的数据写到流里面
- OutputStream字节流Writer字符流
- 输入流
- 将外部数据写到内存中
- 从流里面读出数据
- InputStream字节流Reader字符流
PS
- I/O流对象不属于内存对象 需要自己关闭
- OutputStream和InputStream 都是抽象类 不能直接使用
//FileOutputStream/FileInputStream
//ObjectOutoutStream/ObjectInputStream
//FileWriter/FileReader
向文件写入数据
//1.创建文件输出流对象
FileOutputStream fos = new FileOutputStream(file);
//2.调用write方法写入
byte[] text = {'1','2','3','4'};
fos.write(text);
//3.操作完毕需要关闭stream对象
fos.close();
//向文件写入数据-字符流
FileWriter fw = new FileWriter(file);
char[] name = {'安','卓'};
fw.write(name);
fw.close();
读取内容
FileInputStream fis = new FileInputStream(file);
byte[] name = new byte[12];
int count = fis.read(name);
fis.close();
System.out.println(count+" "+new String(name));
FileReader fr = new FileReader(file);
char[] book = new char[4];
count = fr.read(book);
fr.close();
System.out.println(count+" "+new String(book));
向文件里面存一个对象
- 序列化 serializable
- 保存的对象必须实现Serializable接口
- 如果对象内部还有属性变量是其他类的对象 这个类也必须实现Serializable接口
Person xw = new Person();
xw.name = "小王";
xw.age = 20;
OutputStream os = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(xw);
oos.close();
从文件里面读取一个对象
InputStream is = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(is);
Person xw = (Person) ois.readObject();
System.out.println(xw.name+" "+xw.age);
ois.close();
将一个文件copy到另外一个位置
//1.源文件的路径
String sourcePath = "C:\\Users\\hp\\Desktop\\TIM图片20190811082728.jpg";
//2.目标文件的路径
String desPath = "G:\\javastudy\\day1\\src\\main\\java\\day8\\1.jpg";
//3. 图片 字节
FileInputStream fis = new FileInputStream(sourcePath);
FileOutputStream fos = new FileOutputStream(desPath);
byte[] in =new byte[1024];
while(true){
int count = fis.read(in);
if(count!= -1){
//读取到内容了
//将这一次读取的内容写入目标文件
fos.write(in,0,count);
}else {
break;
}
}
fis.close();
fos.close();
体会
听课的时候感觉挺简单,但是自己实操还是不太行,拿到一个程序还是有点无从下手的感觉,尤其是关于主程序如何写这方面