文件操作File

纸上得来终觉浅

1.java文件和文件夹的操作

public class abs{
	public static void main(String[] args) {
/*文件操作*/		
		File myFile = new File("test.txt");
		if(!myFile.exists()){
			System.out.println("myfile:文件不存在");
			try {
				myFile.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
			System.out.println("myfile创建成功");
		}else{
			System.out.println("myfile已经存在");
		}
		System.out.println("绝对路径:"+myFile.getAbsolutePath());
		System.out.println("父级目录:"+new File(myFile.getAbsolutePath()).getParent());
		System.out.println("相对路径:"+myFile.getPath());
		System.out.println("文件名:"+myFile.getName());
		System.out.println("是否文件夹:"+myFile.isDirectory());
		System.out.println("是否文件:"+myFile.isFile());
		
		System.out.println("是否可读:"+myFile.canRead());
		System.out.println("是否可写:"+myFile.canWrite());
		System.out.println();
		
		/*在windows在文件可读性不能被设置为false,所以这里的设置失效,如果生效的话可读为false,可写为false*/
		System.out.println("设置不可读"+myFile.setReadable(false));
		System.out.println("是否可读:"+myFile.canRead());
		System.out.println("是否可写:"+myFile.canWrite());
		System.out.println();
		
		System.out.println("设置可读"+myFile.setReadable(true));
		System.out.println("设置不可写"+myFile.setWritable(false));
		System.out.println("是否可读:"+myFile.canRead());
		System.out.println("是否可写:"+myFile.canWrite());
		System.out.println();
		
		System.out.println("设置不可读"+myFile.setReadable(false));
		System.out.println("设置可写"+myFile.setWritable(true));
		System.out.println("是否可读:"+myFile.canRead());
		System.out.println("是否可写:"+myFile.canWrite());
		System.out.println();
		
		System.out.println("设置只可读"+myFile.setReadOnly());
		System.out.println("是否可读:"+myFile.canRead());
		System.out.println("是否可写:"+myFile.canWrite());
		System.out.println();
		
		System.out.println("文件长度:"+myFile.length());
		System.out.println("文件是否隐藏:"+myFile.isHidden());
		
		
		System.out.println("输出数据前设置可写"+myFile.setWritable(true));
		/*输出数据到文件*/
		try {
			FileOutputStream fileOutputStream = new FileOutputStream(myFile);
			OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"UTF-8");
			BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
			bufferedWriter.write("白日依山尽\n");
			bufferedWriter.write("黄河入海流\n");
			bufferedWriter.write("欲穷千里目\n");
			bufferedWriter.write("更上一层楼\n");
			bufferedWriter.close();
			outputStreamWriter.close();
			fileOutputStream.close();
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		System.out.println("文件长度:"+myFile.length());
		System.out.println();
		
		try {
			FileInputStream fileInputStream = new FileInputStream(myFile);
			InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
			String line;
			while((line = bufferedReader.readLine())!=null){
				System.out.println(line);
			}
			bufferedReader.close();
			inputStreamReader.close();
			fileInputStream.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		File myfile2 = new File("test2.txt");
		myFile.renameTo(myfile2);
		
		if(myFile.delete()){
			System.out.println("旧文件删除成功");
		}else{
			System.out.println("旧文件删除失败");
			if(myfile2.exists()){
				myfile2.delete();
				System.out.println("新文件删除成功");
			}else{
				System.out.println("新文件删除失败");
			}
		}
		
/*文件夹操作*/
		File myFoder = new File("test");
		if(!myFoder.exists()){
			System.out.println("myFoder:文件夹不存在");
			myFoder.mkdirs();
		}else{
			System.out.println("文件夹已经存在");
		}
		
		File myfoder2 = new File("test2");
		myFoder.renameTo(myfoder2);
		
		if(myFoder.delete()){
			System.out.println("旧文件夹删除成功");
		}else{
			System.out.println("旧文件夹删除失败");
			if(myfoder2.exists()){
				myfoder2.delete();
				System.out.println("新文件夹删除成功");
			}else{
				System.out.println("新文件夹删除失败");
			}
		}
		
		//文件夹内部文件遍历
		File myFoder3 = new File("src");
		if(!myFoder3.exists()){
			System.out.println("src文件夹不存在");
		}else{
			search(myFoder3,1);
		}
	}
	
	public static void search(File file,int i){
		String tab = "";
		int i2 = i;
		while(i2-->0){tab+="-";}
		System.out.println(tab+file.getName());
		if(!file.isFile()){
			File newFile[] = file.listFiles();
			i++;
			for (int x = 0; x < newFile.length; x++) {
				search(newFile[x],i);
			}
		}
	}
}

下面是运行结果:




2.注意一下几点:

1) windows不可设置文件属性为不可读,所以上段代码设置不可读是失效。

2)windows  rename操作必须在同一个分区中。

3)设置属性之间的关系:

A: 如果设置了可写,一定是可读可写的。

B:如果设置了可读为真,可以是不可写的。

C:如果设置了可读为假,一定是不可读不可写的。

以上三点基于这样的命题即可:可读是可写必要条件

D:setReadable(true) +setWritable(false)等同于 setReadOnly


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值