黑马程序员——JAVA之IO

------- android培训java培训、期待与您交流! ----------

JAVA之IO流

一、File
1、File的方法
构造方法:
File(File parent,String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent,String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
构造方法练习:
package it.heima.io;

import java.io.File;
import java.io.IOException;

public class FileDemo {
	public static void main(String[] args) throws IOException {
		//方法一
		File file=new File("F:\\4.txt");
		//方法二
		File file2=new File("F:\\","4.txt");
		//方法三
		File file3=new File("F:\\");
		File file4=new File(file3,"4.txt");
		
		
	}
}
File的成员方法:
判断方法:
public boolean createNewFile()
public  boolean mkdir()
public  boolean mkdirs()
public boolean delete()
public boolean renameTo(File dest)
public boolean isFile()
public boolean isDirectory()
public boolean exists()
public boolean isHidden()

判断方法代码练习:
package it.heima.io;

import java.io.File;
import java.io.IOException;

public class FileDemo2 {
	public static void main(String[] args) throws IOException {
		File file=new File("a.txt");
		file.createNewFile();
		System.out.println("存在:"+file.exists());
		System.out.println("是否文件夹:"+file.isDirectory());
		System.out.println("是否文件:"+file.isFile());
		System.out.println("是否隐藏:"+file.isHidden());
		System.out.println("重命名or剪切"+file.renameTo(new File("b.txt")));
		System.out.println("删除"+new File("b.txt").delete());
	
		System.out.println(new File("aa\\bb").mkdirs());
		System.out.println(new File("aa\\bb").delete());
		System.out.println(new File("aa").delete());
	}
}

获取方法:
public String getAbsolutePath() 绝对路径
public String getPath() 相对路劲
public String getName()
public long length() 获取长度(字节个数)
public long lastModifyied() 最后一次修改时间

获取方法代码练习:
package it.heima.io;

import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileDemo3 {
	public static void main(String[] args) throws Exception {
		File file=new File("aa\\a.txt");
		new File("aa").mkdir();
		file.createNewFile();
		System.out.println("绝对路径"+file.getAbsolutePath());
		System.out.println("相对路径"+file.getPath());
		System.out.println("名字"+file.getName());
		System.out.println("长度"+file.length());
		System.out.println("最后修改时间"+file.lastModified());
		
		Date date=new Date(file.lastModified());
		SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(dateFormat.format(date));
	}
}

public String[] list() 获取所有文件夹名称数组
public File[] listFiles()  获取所有文件或文件夹对象
package it.heima.io;

import java.io.File;

public class FileDemo3 {
	public static void main(String[] args) throws Exception {
		File file=new File("E:\\");
		String[] name=file.list();
		for(String item:name){
			System.out.println(item);
		}
		System.out.println("---------------------");
		File[] files=file.listFiles();
		for(File f:files){
			System.out.println(f.getName());
		}
	}
}

、IO流

1、字节流

按流向分类:可以分为输入流和输出流.

按类型分类:可以分为字节流和字符流

输入流:


------------------------丨InputStream        抽象类

-------------------------------丨FileInputStream        读文件的输入字节流,没有解码能力,读出的是byte

-------------------------------丨BufferedInpuStream        内部存在一个8K的字节数组,为了提高读文件的效率

输出流:

------------------------丨OnputStream              抽象类

-------------------------------丨FileOnputStream              写文件的输出字节流,没有编码能力,要通过getBytes的编码转换成byte才能写入

-------------------------------丨BufferedOnpuStream           内部存在一个8K的字节数组,为了提高写文件的效率


2、字节流的使用

输出字节流:

构造方法:new FileOutputStream(String name);

new FileOutputStream(File file)

成员方法:public void write(byte[]/byte b)

public void close()

public void flush()

输出字节流代码练习:

package it.heima.io;

import java.io.File;

import java.io.FileOutputStream;


public class OutputStreamDemo {
	public static void main(String[] args) throws Exception {
		//2钟OutputStream构造方法
		/*File file=new File("a.txt");
		FileOutputStream outputStream=new FileOutputStream(file);*/
		FileOutputStream fileOutputStream=new FileOutputStream("a.txt");
		//调用系统的方法帮我们创建、管理文件
		String s="hello,java";
		fileOutputStream.write(s.getBytes());
		fileOutputStream.close();
		//为什么要close?
		//1.让流对象变成垃圾街被系统回收
		//2、通知系统文件释放相关资源
	}
}

3种write()方法和换行:

package it.heima.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class OutputStreamDemo2 {
	public static void main(String[] args) throws Exception {
		//3种write方法
		FileOutputStream fileOutputStream=new FileOutputStream("F:\\a.txt");
		//传入int
		/*fileOutputStream.write(97);
		fileOutputStream.write(57);
		fileOutputStream.write(55);
		fileOutputStream.close();
		*/
		byte[] buf={97,98,99,100};
		fileOutputStream.write(buf);
		fileOutputStream.write(buf, 1, 2);
		//换行:
		/*windows: \r\n
		 * linux: \n
		 * mac:\r
		 * 一些常用的文本软件能识别任意换行符
		 * */
		for(int i=0;i<4;i++){
			fileOutputStream.write(("hello"+i+"\r\n").getBytes());
		}
		fileOutputStream.close();
	}
}


输入字节流
同样学习2个构造方法:

new FileInputStream(File file)

new FileInputStream(Stream name)

成员方法:

public int read()

public int read(byte[] buf)

public int read(byte[] bys,int start,int length)

输入字节流的方法练习:

package it.heima.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class FileInputStreamDmeo {
	public static void main(String[] args) throws Exception {
		FileInputStream fileInputStream=new FileInputStream("F:\\a.txt");
		int b=fileInputStream.read();
		System.out.println(b);
		
		int c=fileInputStream.read();
		System.out.println((char)c);
		//输入字节流读有点类似迭代器,读1个字节,下次读从该字节的下一个开始
		int buf=0;
		while((buf=fileInputStream.read())!=-1){
			System.out.println((char)buf);
		}
		fileInputStream.close();
	}
}

3、缓冲字节流

BufferedInputStream/BufferedOutputStream

缓冲字节流内部维护了一个字节数组,再接数组存满再一次性传输。


代码练习复制一个文本:

package it.heima.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.nio.Buffer;

public class BufferedInputStreamDemo {
	public static void main(String[] args) throws Exception {
		BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream("F:\\a.txt"));
		BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream("F:\\b.txt"));
		int by=0;
		/*while((by=bufferedInputStream.read())!=-1){
			bufferedOutputStream.write(by);
		}
		
		*/
		byte[] buf=new byte[1024];
		while((by=bufferedInputStream.read(buf))!=-1){
			bufferedOutputStream.write(buf);
		}
		bufferedOutputStream.close();
		bufferedInputStream.close();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值