阿猛学习笔记java十一IO

十六IO

1.File
构造方法

File(String pathname)

File(URLI uri)

常用方法

booelan exists() 判断文件或目录是否存在

boolean isDirectory 判断是否是目录

boolean isFile() 判断是否是文件

long length() 返回文件的字节数

String getName() 返回对象文件或目录的名称

String getPath() 返回对象表示的文件的相对路径名

String getAbsolutePath() 返回此对象表示的绝对路径名

long lastModified() 返回文件最后一次被修改的事件

File[] listFiles() 返回该文件路径下的文件列表

String list() 返回该目录下的文件列表名

boolean mkdir() 创建抽象路径指定的目录

boolan createNewFile() 创建名称的空文件,不创建文件夹

boolean delete() 删除对象指定的文件或目录

public static void main(String[] args) throws IOException {
		File file=new File("E:\\乱七八糟");
		File file2=new File("E:/乱七八糟/乱七八糟1");
		File file3=new File("E:/乱七八糟/sss");
		file3.mkdir();
		if(file.exists()&& file.isDirectory()){
			System.out.println("文件存在且是目录");
			System.out.println("文件名:"+file.getName());
			System.out.println("文件相对路径:"+file.getPath());
			System.out.println("文件绝对路径:"+file.getAbsolutePath());
			System.out.println("文件长度:"+file.length());
			System.out.println("文件最后一次被修改时间:"+file.lastModified());
			System.out.println("文件路径分隔符:"+file.separator);
		}else{
			System.out.println("文件不存在");
			if(file.createNewFile()){
				System.out.println("创建文件成功");
			}
		}
		File f[]=file.listFiles();
		for(File f1:f){//遍历该文件下所有文件
			System.out.print(f1.getName()+"\t");
		}
		
		
	}

文件存在且是目录
文件名:乱七八糟
文件相对路径:E:\乱七八糟
文件绝对路径:E:\乱七八糟
文件长度:4096
文件最后一次被修改时间:1603155616099
文件路径分隔符:\
apache-zookeeper-3.6.1-bin.tar.gz	bookmarks_2020_10_13.html	DevInstall
2.字节流

读写数据以字节为单位进行处理

FileInputStream 字节输入流

父类InputStream

构造方法

FileInputStream(File file)

FileInputStream(String path)

常用方法

int read() 从输入流读取一个字节数据,返回该字节的ASCII的值

int read(byte[] b) 从输入流最多读取b.length个字节并放入字节数组中

int read(byte[] b,int off,int len) 从输入流读取最多为len字节并放入字节数组中

int available() 返回从输入流读取剩余的字节数的估计值

void close()

public class S2FileInputStream {
	public static void main(String[] args) throws IOException {
		File file=new File("C:/Users/lgm/Desktop/sss.txt");
		InputStream is=new FileInputStream(file);
		//读取操作1
//		char c=' ';//保存读取字符
//		int k=0;
//		while((k=is.read())!=-1){
//			System.out.print((char)k);
//		}
//		System.out.println();
		//读取操作2
//		byte b[]=new byte[(int)file.length()];
//		is.read(b);//将文件内容读取出来并放入字节数组b中
//		String s=new String(b);
//		System.out.println("ss:"+s);
//		System.out.println();
		//读取操作3
		System.out.println("剩余字节数:"+is.available());
		System.out.println("长度:"+file.length());
		Scanner input=new Scanner(is);
		input.useDelimiter("b");
		while(input.hasNext()){
			System.out.println(input.next());
			System.out.println("内容:"+is.available());
		}
	}
}

剩余字节数:67
长度:67
Nr5NDGhMr
内容:0
EG234567
内容:0

澹ぇ澶鎭╁晩
内容:0
鍙戝姩鏈烘槸鍜栧暋濂ュ崱绂?
内容:0

FileOutputStream字节输出流

父类OutputStream

构造方法

FileOutputStream(File file)

FileOutputStream(String path)

FileOutputStream(File file,boolean append)

FileOutputStream(String path,boolean append)

append如果是true,则将字节写入文件末尾处,而不是从开始处写入

常用方法

void write(int c)

void write(byte[] buf)

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

void close()

public class S3FileOutputStream {

	public static void main(String[] args) throws IOException {
		File file=new File("C:/Users/lgm/Desktop/sss.txt");
		OutputStream os=new FileOutputStream(file,true);//每次写入的内容追加到文件后面
		//若相应文件不存在会自动创建
		//写入操作1:按字节写入
		char c=' ';
		os.write((int)c);
		//写入操作2:按字节数组写入
		String s="中文 hellow orld";
		os.write(s.getBytes());
		os.close();
		

	}

}
3.字符流

读写数据以字符为单位进行处理

InputStreamReader字符输入流

父类Reader

构造方法

InputStreamReader(InputStream in)

InputStreamReader(InputStream in,Charset cs)

常用方法

String getEncoding() 返回流使用的字符编码

int read() 读取单个字符
int read(char c[]) 读取最多b.length个字符并放于字符数组中

int read(char c[],int offset,int length)

public class S4InputStreamReader {

	public static void main(String[] args) throws IOException {
		File file=new File("C:/Users/lgm/Desktop/sss.txt");
		InputStream is=new FileInputStream(file);
		Reader reader=new InputStreamReader(is);
//		//1.逐个读取单个字符
//		char c=' ';
//		int k=0;
//		while((k=reader.read())!=-1){
//			System.out.print((char)k);
//		}
//		System.out.println();
		//2.一次性读取一个字符数组
//		char ca[]=new char[(int)file.length()];
//		reader.read(ca);
//		System.out.println(new String(ca));
//		reader.close();
//		is.close();
		System.out.println(file.length());
		Scanner input=new Scanner(reader);
		//input.useDelimiter("\n");//设置分隔符
		while(input.hasNext()){
		System.out.println(input.next());
		} 
	}
}
OutputStreamWriter字符输出流

父类Writer

构造方法

OutputStreamWriter(OutputStream os)

OutputStreamWriter(OutputStream in,Charset cs)

常用方法

String getEncoding() 返回流使用的字符编码

void write(int c) 写入单个字符
void write(char c[]) 将字符数组写入

void write(char [],int offset,int length) 写入字符数组的一部分

void write(String s)

void write(String s,int off,int len)

public class S5OutputStreamWriter {
    
	public static void main(String[] args) throws IOException {
		File file=new File("C:/Users/lgm/Desktop/sss.txt");
		OutputStream os=new FileOutputStream(file,true);
		Writer writer=new OutputStreamWriter(os);
		//一次性写入单个字符
		writer.write((int)'A');
		//一次性写入一个字符数组
		String s="内部OSPF骨干和非骨干";
		char c[]=s.toCharArray();
		writer.write(c);
		//一次性写入一个字符串
		String ss="写入一个字符串";
		writer.write(ss);
		writer.close();
		os.close();	
	}
}
4.缓冲流
BufferedReader字符缓冲输入流

构造方法

BufferedReader(Reader reader)

常用方法

int read()

int read(byte b[])

int read(byte b[],int off,int len)

String readLine() 读取一行文本

long skip(long n)

public class S6BufferedReader {
	public static void main(String[] args) throws Exception {
		File file=new File("C:/Users/lgm/Desktop/sss.txt");
		InputStream is=new FileInputStream(file);
		Reader reader=new InputStreamReader(is);
		BufferedReader bufferedReader=new BufferedReader(reader);
//		//1.逐个个读取
//		int c;
//		while((c=bufferedReader.read())!=-1){
//			System.out.print((char)c);
//		}
//		//2.逐行读取
//		String s="";
//		while((s=bufferedReader.readLine())!=null){
//			System.out.println(s);
//		}
		//3.多个读取且不超数组长度
		char c[]=new char[(int)file.length()];
		bufferedReader.read(c);
		System.out.println(new String(c));
		bufferedReader.close();
		reader.close();
		is.close();				
	}
}
BufferedWriter字符缓冲输出流

构造方法

BufferedWriter(Writer writer) 创建一个默认大小输出缓冲区的缓冲字符输出流

BufferedWriter(Writer writer,int sz) 创建一个使用给定大小缓冲区的缓冲字符输出流

常用方法

void write(int i)

void write(char c[])

void write(char [],int offset,int length) 写入字符数组的一部分

void write(String s)

void write(String s,int off,int len)

void newLine()

public class S7BufferedWriter {

	public static void main(String[] args) throws IOException {
		File file=new File("C:/Users/lgm/Desktop/sss.txt");
		OutputStream os=new FileOutputStream(file);
		Writer writer=new OutputStreamWriter(os);
		BufferedWriter bufferedWriter=new BufferedWriter(writer);
		//1.写入单个字符
		bufferedWriter.write((int)'F');
		//2.写入字符数组
		String sa="设计开发sss安抚撒发生";
		bufferedWriter.write(sa.toCharArray());
		//3.写入字符串
		bufferedWriter.write("通过缓冲输出流写入字符串");
		bufferedWriter.close();
		writer.close();
		os.close();
	}
}
5.数据流(二进制文件读写)
DataInputStream数据输入流

FileInputStream 的子类

构造方法

DataInputStream(InputStream is)

常用方法

int read(byte[] b) 读出字节并且存储到字节数组

int ready(byte[] b,int off,int len)

String readLine()

DataOutputStream数据输出流

FileOutputStream的子类

构造方法

DataOutputStream(OutputStream os)

常用方法

int size()

void write(int a)

void write(byte[] b)

public class S8DataInOutputStream {

	public static void main(String[] args) throws IOException {
		File f=new File("C:\\Users\\lgm\\Pictures\\preview (2).jpg");
		InputStream is=new FileInputStream(f);
		DataInputStream dis=new DataInputStream(is);
		byte b[]=new byte[(int)f.length()];
		dis.read(b);
		File file=new File("C:\\Users\\lgm\\Desktop\\preview.jpg");
		OutputStream os=new FileOutputStream(file);
		DataOutputStream dos=new DataOutputStream(os);
		dos.write(b);
		dis.close();
		dos.close();
		is.close();
		os.close();
	}
}
6.打印流
PrintStream 字节打印流

构造方法

PrintStream(File file)

PrintStream(OutputStream os)

常用方法

PrintStream printf(Locale i,String format,Object…atgs) 根据指定的Locale进行格式化输出

PrintStream printf(boolean b)该方法被重载多次,可输出任意数据

void println(boolean b) 该方法被重载多次,输出任意数据后换行

%s 内容为字符串

%d 内容为整数

%f 内容为小数

%c 内容为字符

PrintWriter 字符打印流
public class S9Print {
	public static void main(String[] args) throws FileNotFoundException {
		File f=new File("C:\\Users\\lgm\\Pictures\\preview (2).jpg");
		PrintStream ps=new PrintStream(f);
		ps.print("你好");
		ps.print(1212);
		ps.print(true);
		int id=100;
		String name="李四";
		double score=98.9;
		char c='A';
		ps.printf("%d%s%f%c", id,name,score,c);
		ps.close();
				
	}
}
总结:
 File 类用于访问文件或目录的属性
 程序和数据源之间通过流联系
     输入流和输出流
	 字节流和字符流
 FileInputStream 和 FileOutputStream 以字节流的方式读写文本文件。
 BufferedReader 和 BufferedWriter 以字符流的方式读写文本文件,而且效率更高。
 DataInputStream 和 DataOutputStream 可用于读写二进制文件
 使用字节打印流及字符打印流输出信息到文件里
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值