io流(1)

  • 文件(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();
}
}
posted @ 2019-08-28 18:19  26417  阅读(140)  评论(0编辑  收藏  举报