16.IO编程

1.File类

使用File类实现文件的创建与删除

package cn.mldn.demo;
import java.io.File;
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:\\mldn.txt");				// 文件路径:“\\”转义为“\”
		if (file.exists()) {								// 文件存在
			file.delete();								// 删除文件
		} else { 										// 文件不存在
			System.out.println(file.createNewFile());		// 创建新的文件
		}
	}
}

创建带目录的文件

package cn.mldn.demo;
import java.io.File;
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "hello" + File.separator 
				+ "demo" + File.separator + "message"
				+ File.separator + "mldn.txt");						// 操作文件路径
		if (!file.getParentFile().exists()) { 							// 父路径不存在
			file.getParentFile().mkdirs(); 							// 创建父路径
		}
		if (file.exists()) {											// 文件存在
			file.delete();											// 删除文件
		} else { 													// 文件不存在
			System.out.println(file.createNewFile()); 					// 创建新的文件
		}
	}
}

获取文件基础信息

package cn.mldn.demo;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
class MathUtil {
	private MathUtil() {}
	public static double round(double num, int scale) {		// 四舍五入
		return Math.round(Math.pow(10, scale) * num) / Math.pow(10, scale);
	}
}
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "mldn.jpg");
		System.out.println("文件是否可读:" + file.canRead());
		System.out.println("文件是否可写:" + file.canWrite());
		System.out.println("文件大小:" + MathUtil.round(
				file.length() / (double) 1024 / 1024, 2) + "M");
		System.out.println("最后的修改时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
				.format(new Date(file.lastModified())));
		System.out.println("是目录吗?" + file.isDirectory());
		System.out.println("是文件吗?" + file.isFile());
	}
}

2.字节流与字符流

使用OutputStream类实现内容输出

package cn.mldn.demo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator + "hello" + 
				File.separator + "mldn.txt"); 					// 输出文件路径
		if (!file.getParentFile().exists()) { 						// 父目录不存在
			file.getParentFile().mkdirs(); 						// 创建父目录
		}
		OutputStream output = new FileOutputStream(file); 			// 子类实例化输出流对象
		String str = "www.mldn.cn"; 				// 输出数据内容
		output.write(str.getBytes()); 							// 字符串转为字节数组
		output.close(); 											// 关闭资源
	}
}

使用InputStream类读取文件内容

package cn.mldn.demo;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator + "hello" + 
				File.separator + "mldn.txt"); 							// 输出文件路径
		if (file.exists()) {												// 文件存在
			InputStream input = new FileInputStream(file) ;				// 文件输入流
			byte data [] = new byte [1024] ; 								// 数据读取缓冲区
			// 读取数据,将数据读取到缓冲区之中,同时返回读取的字节个数
			int len = input.read(data) ;
			System.out.println("【" + new String(data, 0, len) + "】");		// 字节转为字符串
			input.close();												// 关闭输入流
		}
	}
}

使用FileWriter实现数据输出

package cn.mldn.demo;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator + "hello" + 
				File.separator + "mldn.txt"); 						// 输出文件路径
		if (!file.getParentFile().exists()) {							// 父路径不存在
			file.getParentFile().mkdirs(); 							// 创建父目录
		}
		Writer out = new FileWriter(file) ; 							// 实例化Writer类对象
		out.write("魔乐大学:");								// 输出字符串
		out.append("www.zyy.com") ;									// 追加输出内容
		out.close();													// 关闭输出流
	}
}

字符输入流

package cn.mldn.demo;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator + "hello" + 
				File.separator + "mldn.txt"); 					// 输出文件路径
		if (file.exists()) {										// 文件存在
			Reader in = new FileReader(file) ;					// 实例化输入流
			char data[] = new char[1024];							// 缓冲区
			in.skip(9) ;											// 跨过9个字符长度
			int len = in.read(data) ;								// 读取数据
			System.out.println(new String(data,0,len));
			in.close();											// 关闭输入流
		}
	}
}

文件拷贝

package cn.mldn.vo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class JavaAPIDemo9 {

	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		CopyUtil.copyFile("e:" + File.separator + "hello.jpg", "e:" + File.separator + "zyy.jpg");
		long end = System.currentTimeMillis();
		System.out.println("时间" + (end - start));
	}
	
}

class CopyUtil {
	public static void copyFile(String src, String dest) {
		copyFile(new File(src), new File(dest));
	}

	public static void copyFile(File src, File dest) {
		InputStream input = null;
		OutputStream output = null;
		try {
			input = new FileInputStream(src);
			output = new FileOutputStream(dest);
			byte[] car = new byte[1024];
			int len = -1;
			while ((len = input.read(car)) != -1) {
				output.write(car, 0, len);
			}
			output.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			if (input != null) {
				output.close();

			}
			if (input != null) {
				input.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}

3.转换流

package cn.mldn.demo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator + "hello" + 
				File.separator + "mldn.txt"); 						// 输出文件路径
		if (!file.getParentFile().exists()) {							// 父路径不存在
			file.getParentFile().mkdirs(); 							// 创建父目录
		}
		OutputStream output = new FileOutputStream(file) ;				// 字节流
		Writer out = new OutputStreamWriter(output) ; 					// 字节流转字符流
		out.write("www.mldn.cn"); 									// 字符流输出
		out.close();												// 关闭输出流
		output.close(); 											// 关闭输出流
	}
}

4.缓存流

package cn.mldn.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class JavaIODemo {
	public static void main(String[] args) throws Exception {
		// System.in为InputStream类实例,利用InputStreamReader转为Reader实例
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		System.out.print("请输入您的年龄:");							// 提示信息
		String msg = input.readLine(); 								// 接收输入信息
		if (msg.matches("\\d{1,3}")) { 								// 是否由数字所组成
			int age = Integer.parseInt(msg);							// 字符串转为int
			System.out.println("年龄为:" + age);						// 数据输出
		} else {
			System.out.println("输入的内容不是数字,程序无法正常执行!");
		}
	}
}

5.对象序列化

class Member implements Serializable { 
	private String name ;
	private int age ;
	public Member(String name,int age) {
		this.name = name ;
		this.age = age ;
	}
	// setter、getter、无参构造略
	@Override
	public String toString() {
		return "姓名:" + this.name + "、年龄:" + this.age ;
	}
}
public class JavaIODemo {
	// 本次操作要将序列化的对象保存到文件之中,将文件定义为公共常量
	private static final File SAVE_FILE = new File("D:" + File.separator + "mldn.member") ;
	public static void main(String[] args) throws Exception {
		saveObject(new Member("小李老师",18)) ;			// 对象序列化
		System.out.println(loadObject());					// 对象反序列化
	}
	public static void saveObject(Object obj) throws Exception {
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(SAVE_FILE)) ;
		oos.writeObject(obj); 							// 序列化
		oos.close(); 
	}
	public static Object loadObject() throws Exception {
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(SAVE_FILE)) ;
		Object obj = ois.readObject() ; 					// 反序列化
		ois.close();
		return obj ;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值