Java I/O流 (一)

File类

File类概述和构造方法
File类介绍
它是文件和目录路径名的抽象表示
文件和目录是可以通过File封装成对象的
对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以
是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
File类的构造方法

在这里插入图片描述
示例代码:

 public class FileDemo01 { 
 public static void main(String[] args) { 
  //File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的 File 实例。 
  File f1 = new File("E:\\itcast\\java.txt"); 
 		System.out.println(f1);
   //File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File实例。 
  		File f2 = new File("E:\\itcast","java.txt"); 
   		System.out.println(f2); 
   	//File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File 实例。
    	File f3 = new File("E:\\itcast"); 
    	File f4 = new File(f3,"java.txt"); 
    	System.out.println(f4); 
    } 
    }

File类创建功能
方法分类
在这里插入图片描述

public class FileDemo02 { 
	 public static void main(String[] args) throws IOException { 
 //需求1:我要在E:\\itcast目录下创建一个文件java.txt 
 	 File f1 = new File("E:\\itcast\\java.txt"); 
 	 System.out.println(f1.createNewFile()); 
 	 System.out.println("--------"); 
 //需求2:我要在E:\\itcast目录下创建一个目录JavaSE 
 	 File f2 = new File("E:\\itcast\\JavaSE"); 
 	 System.out.println(f2.mkdir()); 
 	 System.out.println("--------"); 
 //需求3:我要在E:\\itcast目录下创建一个多级目录JavaWEB\\HTML 
 	 File f3 = new File("E:\\itcast\\JavaWEB\\HTML"); 
 // System.out.println(f3.mkdir());
 	  System.out.println(f3.mkdirs()); 
 	  System.out.println("--------"); 
  //需求4:我要在E:\\itcast目录下创建一个文件javase.txt 
 	  File f4 = new File("E:\\itcast\\javase.txt");
   // System.out.println(f4.mkdir());
 	   System.out.println(f4.createNewFile()); 
   } 
   }

File类判断和获取功能
判断功能
方法名 说明
public boolean isDirectory() 测试此抽象路径名表示的File是否为目录
public boolean isFile() 测试此抽象路径名表示的File是否为文件
public boolean exists() 测试此抽象路径名表示的File是否存在
获取功能
在这里插入图片描述
File类删除功能
在这里插入图片描述
示例代码:

 public class FileDemo03 { 
 public static void main(String[] args) throws IOException {
// File f1 = new File("E:\\itcast\\java.txt"); 
 //需求1:在当前模块目录下创建java.txt文件
  File f1 = new File("myFile\\java.txt"); 
  // System.out.println(f1.createNewFile()); 
  //需求2:删除当前模块目录下的java.txt文件
   System.out.println(f1.delete());
    System.out.println("--------"); 
   //需求3:在当前模块目录下创建itcast目录
     File f2 = new File("myFile\\itcast");
      // System.out.println(f2.mkdir()); 
      //需求4:删除当前模块目录下的itcast目录 
      System.out.println(f2.delete()); 
      System.out.println("--------"); 
      //需求5:在当前模块下创建一个目录itcast,然后在该目录下创建一个文件java.txt 
      File f3 = new File("myFile\\itcast"); 
      // System.out.println(f3.mkdir()); 
      File f4 = new File("myFile\\itcast\\java.txt");
       // System.out.println(f4.createNewFile()); 
       //需求6:删除当前模块下的目录itcast 
       System.out.println(f4.delete()); 
       System.out.println(f3.delete()); 
       } 
       }

绝对路径和相对路径的区别
绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\itcast\java.txt
相对路径:必须使用取自其他路径名的信息进行解释。例如:myFile\java.txt

递归

递归的介绍
以编程的角度来看,递归指的是方法定义中调用方法本身的现象
把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
递归的基本使用

public class DiGuiDemo { 
 public static void main(String[] args) { 
 //回顾不死神兔问题,求第20个月兔子的对数 
// 个月的兔子对数:1,1,2,3,5,8,... 

  System.out.println(f(20));
   }
   public static int f(int n) { 
  			if(n==1 || n==2) {
    			 return 1; 
   			  } else { 
  		   return f(n - 1) + f(n - 2); 
    		 } 
    		 }
    }

递归的注意事项
递归一定要有出口。否则内存溢出
递归虽然有出口,但是递归的次数也不宜过多。否则内存溢出

递归求阶乘
用递归求5的阶乘,并把结果在控制台输出
代码实现

public class DiGuiDemo01 { 
 public static void main(String[] args) { 
 		int result = jc(5);
  		 System.out.println("5的阶乘是:" + result); 
   }
    //定义一个方法,用于递归求阶乘,参数为一个int类型的变量 
    public static int jc(int n) { 
    //在方法内部判断该变量的值是否是1 
  		  if(n == 1) {
     //是:返回1 
    		 return 1; 
    	 } else { 
     //不是:返回n*(n-1)! 
    		 return n*jc(n-1); 
    	 } 
   	  } 
   }

IO流概述和分类

IO流介绍
IO:输入/输出(Input/Output)
流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传

IO流就是用来处理设备间数据传输问题的。常见的应用:文件复制;文件上传;文件下载
IO流的分类
按照数据的流向
输入流:读数据
输出流:写数据
按照数据类型来分
字节流
字节输入流
字节输出流
字符流
字符输入流
字符输出流
IO流的使用场景
如果操作的是纯文本文件,优先使用字符流
如果操作的是图片、视频、音频等二进制文件。优先使用字节流
如果不确定文件类型,优先使用字节流。字节流是万能的流
字节流写数据
字节流抽象基类
InputStream:这个抽象类是表示字节输入流的所有类的超类
OutputStream:这个抽象类是表示字节输出流的所有类的超类
子类名特点:子类名称都是以其父类名作为子类名的后缀
字节输出流
FileOutputStream(String name):创建文件输出流以指定的名称写入文件
使用字节输出流写数据的步骤
创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)
调用字节输出流对象的写数据方法
释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)

字节流写数据的三种方式

方法名 说明
void write(int b) 将指定的字节写入此文件输出流 一次写一个字节数据
void write(byte[] b) 将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组
数据
void write(byte[] b, int off, int len) 将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一
次写一个字节数组的部分数据

版权声明:本文为weixin_41712089原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41712089/article/details/102925889

智能推荐

20145107 《Java程序设计》第五次实验报告

实验简述: 在本周,我们进行了Java的第五次试验,本次实验的主要内容是结对编程。本次实验的大体过程是: 1.先进行Java的客户端与服务端的代码编写。结对是两个人,一人负责客户端,一人负责服务端。 2.利用加解密代码包,编译运行代码,客户端加密,服务器解密。 3.客户端加密明文后将密文通过TCP发送。 4.在本次的代码编写上,要求代码可以实现两者之间的数据传输,在代码传输的基础上加上一定的加密过...

更改springboot启动拼成的字母

1.更改springboot启动拼成的字母 其实很好改,只需要在resources下新建一个txt文件就可以,命名为banner.txt,那这种字符该怎么拼出来呢,下面推荐一个网址,有这种工具 传送门 2.集成...

Node.js安装配置

好久都没更新博客了,今天心血来潮,决定是时候更新一篇了,首先我们来认识一下node.js。 什么是node.js? 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的...

RocketMQ之双Master集群搭建笔记记录

一:RocketMQ双master集群部署 服务器环境(我采用的虚拟机,centos6 .5【特别注意:安装的虚拟机centos系统一定得是64位的,32位的会启动不起来。即便起来了也会有很多问题,深坑勿踩】)  ip       用户名    密码        角色     模式 192.168.197.101   root        nameServer1,brokerServer1  ...

蓝桥杯试题集-基础练习题-数列特征(Java)

//做题笔记,仅自己看得懂 题目: 正确姿势:...

猜你喜欢

多线程爬取4k超高清美图壁纸

多线程爬取4k美图壁纸 前言:看完此篇文章你可以更加深入的了解多线程的使用,并且最重要的你能够下载你自己想要的超高清4k壁纸 爬取结果: 1. 分析网站 要爬取的url :http://pic.netbian.com/ a) 判断网页是动态加载还是静态加载页面。右击查看网页源代码,按Ctrl + f在源代码中搜索网站的详情页地址,从而判断整个网页是静态加载的 b) 明确爬取的目标。我们要爬取的目标...

elementUI-添加自定义图标

elementui的小图标有限,跟UI给的不一样,这个时候咋办呢?百度走起。。。。参考了两篇博主分享的 自定义elementui中的图标 和 建立图标库,这里主要用到第一种 实际中: elementUI导航栏 具体代码: 汉字转换Unicode编码: 直接打开控制台: 汉字.chatCodeAt().toString(16); 然后回车; 至于三角形的图标,我直接把箭头的 unicode 值改成了...

[Linux]——文件缓冲区

文件缓冲区 提到文件缓冲区这个概念我们好像并不陌生,但是我们对于这个概念好像又是模糊的存在脑海中,之间我们在介绍c语言文件操作已经简单的提过这个概念,今天我们不妨深入理解什么是文件缓冲区。 为什么需要文件缓冲区 当我们在程序中写下一条printf语句时,我们希望将这条语句的内容打印到屏幕上。但是如果你将语句放在循环中,难道你执行一次循环那么操作系统就要打印一次这条数据么?答案当然不是 我们对于程序...

基于FPGA的IIC协议详解——EEPROM控制器(1)

IIC协议举例 常用IIC协议使用地方 常见IIC协议的注意点 24LC64芯片读写命令的时序图 eeprom控制器的系统框图 时序图设计 代码设计 EEPROM控制器测试模块的代码 结束语 常用IIC协议使用地方 熟悉一个协议一定要知道这个协议应该用到什么地方,IIC协议作为飞利浦公司定义的一个慢速传输协议,常用于: 1、芯片寄存器的配置; 2、eeprom的读写; 本次实验我们将使用eepro...

ssm 工程简易搭建(idea 工具下)

现在都流行springboot了,大部分都给你配合了了,可以快速开发。但是今天我们回顾一下ssm的搭建,其实也挺简单的,比刚入门那会觉得简单多了。 这个先讲几点: 1.开始搭建前,idea 自己要配置maven 和tomcat和jdk ,这里就不讲了。 2.为了简化配置,我们按照“约定优于配置”的原则(这种原则在sprigboot项目里面特别明显),启动项目时,项目有个文件...