JAVA练习程序(九)File

该博客展示了Java中对文件的各种操作,包括检查文件存在、读写、重命名、创建目录、读写文件内容等。同时,通过字节流、字符流、缓冲流进行文件读写和复制。此外,还实现了一个简单的请假条应用,允许用户选择病假或事假并写入文件。
摘要由CSDN通过智能技术生成

一、已知文件的路径为c:\mygames.txt,要求得到:
1.是否存在
2.取得文件名
3.取得文件路径
4.得到绝对路径名
5.得到父文件夹名
6.判断文件是否存在
7.判断文件是否可写
8.判断文件是否可读
9.判断是否是目录
10.判断是否是文件
11.是否是绝对路径名称
12.文件最后的修改时间
13.文件的大小

package Homework;

import java.io.File;

public class FileInformationDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("c:\\mygames.txt");
		System.out.println("是否存在:" +file.exists());//判断文件是否存在
		System.out.println("文件名:" +file.getName());//获取文件名
		System.out.println("文件路径:" +file.getPath());//获取文件路径
		System.out.println("绝对路径:" +file.getAbsolutePath());//获取绝对路径
		System.out.println("父文件名:" +file.getParent());//获取父文件名
		System.out.println("是否可写:" +file.canWrite());//判断是否可写
		System.out.println("是否可读:" +file.canRead());//判断是否可读
		System.out.println("是否是目录:" +file.isDirectory());//判断是否是目录
		System.out.println("是否是文件:" +file.isFile());//判断是否是文件
		System.out.println("是否是绝对路径名称:" +file.isAbsolute());//判断是否是绝对路径名称
		System.out.println("最后修改时间:" +file.lastModified());//最后修改时间
		System.out.println("文件大小:" +file.length());//文件大小
	}

}

二、
1.在本地磁盘D盘中创建一个iotest文件夹
2.在文件夹中创建一个以自己名字的拼音组成的文件名
3.获取创建的这个文件的最后修改日期并打印到控制台
4.将创建的这些文件和文件夹全部删除。

package Homework;

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


public class FileCreateDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:\\iotest");
		File NameFile = new File("D:\\iotest\\xxx.txt");
		try {
			NameFile.createNewFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(NameFile.getName() + "最后的修改日期为:" + NameFile.lastModified());
		NameFile.delete();
		file.delete();
		System.out.println("文件夹是否存在:" + file.exists());
		System.out.println("文件是否存在"  + NameFile.exists());
	}

}

三、
1.在本地磁盘上,选择某个有内容的txt文件,将文件 名修改为test.txt
2.计算修改名字后的文件的大小,文件的最后修改日 期、文件的名称及文件的父级目录,将这些信息打印到控制台
3.删除这个文件

package Homework;

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

public class FileChangeNameDemo {

	public static void main(String[] args) {
		File file = new File("D:\\liwenbo.txt");
		File newname = new File("D:\\li.txt");
		file.renameTo( newname);
		System.out.println("文件名:" + newname.getName());
		System.out.println("文件大小:" + newname.length());
		System.out.println("最后修改日期:" + newname.lastModified());
		System.out.println("父级目录:" + newname.getParent());
		newname.delete();
		//fatherfile.delete();
	}

}

四、字节流。
1.已知电脑D盘有iotest文件夹[没有的话自己手动建一个]在里面新建一个Stream.txt文件
2.用输出流FileOutputStream向Stream.txt文件中写入"I love you!"
3.用输入流FileInputStream读取获Stream.txt这个文件内容并打印到控制台

package Homework;

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

public class FileStreamDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:\\iotest\\Stream.txt");
		output(file);
		input(file);
	}
	public static void output(File filename) {
		try(OutputStream file = new FileOutputStream(filename)){
			 String data = "I love you";
		        byte[] buf = data.getBytes(); 
		        file.write(buf, 0, buf.length);  // 指定开始的索引值与字节个数写出。
		        file.close();
		}  catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static void input(File filename) {
		try(InputStream input = new FileInputStream(filename)){//字节输入流,并不涉及编码及解码
			int len = -1;
			byte[] buffer = new byte[10];
			while((len = input.read(buffer)) != -1) {
				System.out.println(new String(buffer,0,len,"GBK"));
			}
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
}

五、字符流
1.已知电脑D盘有iotest2文件夹[没有的话自己手动建一个]在里面新建一个Stream.txt文件
2.用输出流FileWriter 向Stream.txt文件中写入"I love you!"
3.用输入流FileReader 读取获Stream.txt这个文件内容并打印到控制台4.用FileWriter和FileReader完成文件的复制[把Stream.txt复制到C盘的根目录下

package Homework;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Scanner;

public class FileReaderWriterDemo {

	public static void main(String[] args) {
		File file = new File("D:\\iotest\\Stream.txt");	
		File newfile = new File("F:\\Stream.txt");
		output(file);
		input(file);
		copyfile(file,newfile);
	}
	
	public static void output(File file) {
		try(Writer output = new FileWriter(file)){
			output.write("I love you");
		}  catch (IOException e1) {
			e1.printStackTrace();
		}
	}
	
	public static void input(File file) {
		try(Reader input = new FileReader(file)){
			int len = -1;
			while((len = input.read()) != -1) {
				System.out.print((char)len);
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
	}	
	
	public static void copyfile(File src,File dst) {
		int len = -1;
		try(Writer output = new FileWriter(dst);
				Reader input = new FileReader(src)){
			while((len = input.read())!=-1) {
				output.write(len);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

六、缓冲字符流
1.已知电脑D盘有iotest3文件夹在里面新建一个Stream.txt文件
2.用输出流BufferedWriter 向Stream.txt文件中写入"我叫XXX,性别:男,出生年月:XXXXX’’"
3.用输入流BufferdeReader 读取获Stream.txt这个文件内容并打印到控制台
4.用BufferedWriter 和BufferdeReader 完成文件的复制

package Homework;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferdeStream {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:\\iotest3\\Stream.txt");
		File newfile = new File("D:\\iotest2\\Stream.txt");
		output(file);
		input(file);
		copyfile(file,newfile);
	}
	
	public static void output(File file) {
		try(BufferedWriter output= new BufferedWriter(new FileWriter(file))){
			String str = "xxx,性别:男,出生年月xxxx年xx月";
			output.write(str);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static void input(File file) {
		try(BufferedReader input = new BufferedReader(new FileReader(file))){
			String line = null;
			while((line = input.readLine()) != null) {
				System.out.println(line);
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void copyfile(File src , File dest) {
		try(BufferedWriter output= new BufferedWriter(new FileWriter(src));
				BufferedReader input = new BufferedReader(new FileReader(dest))){
			String len = null;
			byte[] buff = new byte[1024];
			while((len = input.readLine()) != null) {
				output.write(len);
			}
		}  catch (IOException e) {
			e.printStackTrace();
		}
	}	
}

七、在C:下创建一个名为Letter的目录,用BufferedReader/BufferedWriter编写一个程序来显示下列选项:
1:撰写请假条
2:查看请假条
根据用户的选择执行以下操作。
如果所选的选项是“撰写请假条”,则应显示下列选项。
1、病假
2、事假
根据用户的选择,在所创建的当前工程Letter目录下创建一个名为Letter.txt的文件,其内容如下:
请假人 用户输入
请假日期 用户输入
正文【写死】
病假 我因发烧,请假一天
事假 参见婚礼,于6.10请假一天

package Homework;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public abstract class Leave {
	private File file ;
	
	public File getFile() {
		return file;
	}
	public void setFile(File file) {
		this.file = file;
	}
	public Leave(File file) {
		this.file = file;
	}
	/**
	 * 查看请假条
	 */
	public void fileReader() {
		try(BufferedReader readfile = new BufferedReader(new FileReader(this.file))){
			String line = null;
			while((line = readfile.readLine()) != null) {//一次读取一行,返回读取到的内容,文件末尾返回null
				System.out.println(line);
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 撰写请假条
	 */
	public void fileWriter() {
		try(BufferedWriter writefile = new BufferedWriter(new FileWriter(this.file))){
			Scanner input = new Scanner(System.in);
			System.out.println("请输入姓名:");
			writefile.write("请假人:" + input.next() + "\r\n");
			System.out.println("请输入日期:");
			writefile.write("请假日期:" + input.next()+ "\r\n");
			//writefile.write("事假 参见婚礼,于6.10请假一天"+ "\r\n");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}

package Homework;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Ill extends Leave {
	
	public Ill(File file) {
		super(file);
	}
	
	public void writetext() {
		try(BufferedWriter writefile = new BufferedWriter(new FileWriter(this.getFile(),true))){
			writefile.write("病假 我因发烧,请假一天"+ "\r\n");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

package Homework;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;


public class Trouble extends Leave {
	
	public Trouble(File file) {
		super(file);
	}
	
	public void writetext() {
		try(BufferedWriter writefile = new BufferedWriter(new FileWriter(this.getFile(),true))){
			writefile.write("事假 参见婚礼,于6.10请假一天"+ "\r\n");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

package Homework;

import java.io.File;
import java.util.Scanner;

public class LeaveDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("C:\\Letter\\Letter.txt");
		Scanner input = new Scanner(System.in);
		System.out.println("请选择请假类别:\n1、病假\n2、事假");
		int kind = input.nextInt();
		if(kind == 1) {
			Ill ill = new Ill(file);
			ill.fileWriter();
			ill.writetext();
			ill.fileReader();
		}
		else if(kind == 2) {
			Trouble trouble = new Trouble(file);
			trouble.fileWriter();
			trouble.writetext();
			trouble.fileReader();			
		}
				
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值