Java IO

引入包

import java.io.*;

IO相关

输入输出流
字节字符流

文件相关

File类

创建File对象

File(Stirng filename)
File(String directoryPath,String filename)
File(Stirng dir,String filename)

创建文件夹

File dir = new File("C:/myletter");
dir.mkdir();//建立一级文件夹
mkdirs()//多级

创建文件

File file = new File("c:\\myletter","letter.txt");

列出目录中的文件

String[] list()
File[] listFiles()
参数为(FilenameFilter obj)时候,返回指定类型的所有文件

访问文件名

getName()
getPath()
getAbsoluteFile()
getAbsolutePath()
getParent()

文件检测

exists()

删除

delete()

问题

把file1.txt的文件拷贝到file2.txt

文件字节流

抽象类

InputStream
OutPutStream

文件读写

FileInputStream
FileOutputStream

创建FileInputStream对象

FileInputStream(String name);
FileInputStream(File file);

int read()//读取一个数据字节
int read(byte b[])//返回读取的字节个数
int read(byte b[],int off,int len)

创建FileOutputStream对象

FileOutputStream(String name)
FileOutputStream(File file)

写文件

void write(byte[]);
void write(byte b[],int off,int len)

关闭

close()
package test;
import java.io.*;
import java.util.Scanner;

public class Test {
	public static void main(String []args) throws Exception{
		File dir = new File("D:/temp");
		dir.mkdir();
		File file = new File("D:\\temp","dt.txt");
		//输出到文件
		FileOutputStream fos = new FileOutputStream(file);
		
//		byte[] b= new byte[1024];
//		Scanner inn = new Scanner(System.in);
//		String s = inn.nextLine();
//		b = s.getBytes();
//		fos.write(b);
		char c;	
		while((c=(char)System.in.read())!='#') {
			fos.write(c);
		}
		

		fos.close();
		//输入回来
	}
}

文件字符流

文件读写

FileReader(String filename)
FileReader(File file)
FileWriter(String filename)
FileReader(File file)

缓冲流

BufferedReader
BufferedWriter
readLine()//读取一行
write(Sintr s,int off,int len)
newLine()//写入一个回行符

结合读写文件

读文件

1.定义文件

File file = new File("D:/temp","dt.txt");

2.文件字符流

FileReader fr = new FileReader(file);

3.缓冲流包装

BufferedReader bfr = new BufferedReader(fr);

4.读

while(line!=null) {
		System.out.println(line);
		line = bfr.readLine();
}

5.关闭资源

bfr.close();
fr.close();
package test;

import java.io.*;
import java.util.Scanner;
public class test2 {
	public static void main(String []args) throws Exception{
	//定义文件
		File file = new File("D:/temp","dt.txt");
		FileReader fr = new FileReader(file);
		BufferedReader bfr = new BufferedReader(fr);
		
		String line = bfr.readLine();
		while(line!=null) {
			System.out.println(line);
			line = bfr.readLine();
		}
		bfr.close();
		fr.close();
	}
}

写文件

package test;

import java.io.*;
import java.util.Scanner;
public class test3 {
	public static void main(String []args) throws Exception{
		File file = new File("D:/temp","dt.txt");
		FileWriter fw = new FileWriter(file);
		BufferedWriter bfw = new BufferedWriter(fw);
		
		Scanner in = new Scanner(System.in);
		String s = in.nextLine();
//		System.out.println(s);
		while(s!="exit") {
			bfw.write(s);
			bfw.newLine();
			s = in.nextLine();
//			System.out.println(s);
		}
		
		bfw.flush();
		bfw.close();
		fw.close();
	}
}

对象流

package 文件Object;

import java.io.*;
public class Circle implements Serializable{
//对象序列化,实现序列化接口!!!
	double r;
	Circle(double r){
		this.r = r;
	}
	double getArea() {
		return 3.14*r*r;
	}
}
package 文件Object;

import java.io.*;
public class test {
	public static void main(String []args) throws Exception{
		//输入
		File file = new File("D:\\JavaEclipse","objects.txt");
		FileOutputStream fos = new FileOutputStream(file);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		//写入文件
		Circle r = new Circle(2);
		oos.writeObject(r);
		
		oos.close();
		fos.close();
		//输出
		FileInputStream fis = new FileInputStream(file);
		ObjectInputStream ois = new ObjectInputStream(fis);
		//从文件读出来
		Circle r2 = (Circle)ois.readObject();
		
		System.out.println("面积"+r2.getArea());
		ois.close();
		fis.close();
	}
}

多个对象

package 文件Object;

import java.io.*;
public class test {
	public static void main(String []args) throws Exception{
		//输入
		File file = new File("D:\\JavaEclipse","objects.txt");
		FileOutputStream fos = new FileOutputStream(file);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		//写入文件
		Circle []a = new Circle[3];
		a[0] = new Circle(6);
		a[1] = new Circle(4);
		a[2] = new Circle(9);
		for(int i = 0;i < 3;i++)
		oos.writeObject(a[i]);
		
		oos.close();
		fos.close();
		//输出
		FileInputStream fis = new FileInputStream(file);
		ObjectInputStream ois = new ObjectInputStream(fis);
		//从文件读出来
		for(int i = 0;i < 3;i++)
		{
			Circle r2 = (Circle)ois.readObject();
			System.out.print("半径:"+r2.r+" 面积");
			System.out.printf("%.2f\n", r2.getArea());
		}
		
		ois.close();
		fis.close();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值