Java基础 项目实例四 API与IO流的一些测试

项目实例四

      • 一、前置知识
      • 二、前置知识的运用实例
      • 三、IO流前置知识
      • 四、IO流实例

一、前置知识

  1. String类:创建后不能改变,可共享。(处理字符串(对象),如文字、英文等。)不建议使用char类型
  2. StringBuffer类:创建后,其序列和内容可更改,可将任意数据转成字符串类型存储。(字符串缓冲区)。具有很多添加、删除、查找等相关方法。【原理:内部数据数组方式存储–复制延长】(暂不用记)
  3. Runtime类:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。public Process exec(String command):在单独的进程中执行指定的字符串命令。 例如:打开记事本。
  4. 使用Runtime类产生一个随机数:Click on me.
  5. 包装类:八种基本数据类型不是类,使用时只是直接赋值。因此为了让这八种基本数据类型有对应的方法及变量,所以Java提供了包装类。
    1. int与integer的区别:是基本数据类型与其包装类的区别。
    2. int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象
    3. 也就是Java所说的数据类型分为:基本数据类型和引用数据类型。
    4. 类进行初始化时:int类的变量初始为0,而Integer的变量初始化为null.
    5. 举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了。
    6. 所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。
  6. Java中printf的用法与C语言相似,格式有些许差别:
格式 输出格式
%c 单个字符
%d 十进制整数
%f 十进制浮点数
%o 八进制数
%s 字符串
%u 无符号十进制数
%x 十六进制数
%% 输出百分号%

二、前置知识的运用实例

  1. 前置知识的运用实例

    package cn.itcast.test3;
    /**
     *@Title Javatest4.java
     *@description Java提供了API这个应用程序接口,它实现了许多功能,使用时调用接口即可
     *@time 2020-4-18 下午3:58:40
     *@author 羽落清泫
     *@version 1.0
     **/
    import java.io.IOException;
    import java.lang.Math;	//基本数学运算方法的类。long包内方法可以不在此行导入,直接使用。
    import java.text.SimpleDateFormat;	//SimpleDateFormat 类可以将日期转变为指定格式的文本
    import java.util.Calendar;	//专门用于对日期进行操作的类
    //import java.util.Random;	//获取随机数的类
    import java.util.Date;	//日期类。
    public class Javatest4 {
    	public static void main(String[] args) throws IOException {
    		System.out.println("----------分隔符--Runtime-----------");
    		Runtime r = Runtime.getRuntime();	
    			//Runtime类:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。
    			//public Process exec(String command):在单独的进程中执行指定的字符串命令。例如:打开记事本
    		r.exec("notepad"); //记事本
    			//r.exec("notepad.exe c:\\文件名.txt");	//获取文件名.txt的内容,由记事本打开
    			//r.exec("calc"); //计算器
    			//r.exec("mspaint"); //画图
    			//r.exec("shutdown -s -t 10000");  //指定时间关机
    			//r.exec("shutdown -a");    //撤销关机
    		String o="这是一个字符类型";		//输出:这是一个字符类型
    //		int len = o.length();
            System.out.println( "输出文字的长度 : " + o.length() );
    		System.out.printf("%s\n",o);
    		System.out.println("----------分隔符--包装类-----------");
    		Integer a = 12321;
    		String b = a.toString();	//注:所有的包装类当中都有toString方法,通过它我们可以非常方便地把值转化成字符串。
    		String i=new String();
    		b=i;
    		System.out.println("b的值为:"+b);
    		System.out.println("----------分隔符--Date使用1-----------");
    		Date date = new Date();					// 初始化 Date 对象
    		System.out.println(date.toString());	// 使用 toString() 函数显示日期时间
    		System.out.println("----------分隔符--Date使用2-----------");
    		long time = System.currentTimeMillis();		//获取本地当前时间
    		System.out.println(time);	//打印获取的时间
    		System.out.println(new Date(0));
    		System.out.println("----------分隔符--Date使用3-----------");
    		Calendar calendar= Calendar.getInstance();
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd::HH:mm:ss");
    		System.out.println(sdf.format(calendar.getTime()));
    		System.out.println("----------分隔符--Date使用4-----------");
    		Date date2 = new Date();
    		String strDateFormat = "yyyy-MM-dd HH:mm:ss";
    		SimpleDateFormat sdf1 = new SimpleDateFormat(strDateFormat);
    		System.out.println(sdf1.format(date2));
    		System.out.println("----------分隔符--Math-----------");
    		System.out.println("0 度的余弦值:" + Math.cos(0));
            System.out.println("1 的反正切值:" + Math.atan(1));
    		System.out.println("E 常量的值:" + Math.E);		// e:自然对数)和 π:圆周率
    		System.out.println("PI 常量的值:" + Math.PI);	//Math:提供了基本的数学操作,如指数、对数、平方根和三角函数等
    	}
    }
    

三、IO流前置知识

  1. 使用 BufferedReader 在控制台读取字符

  2. InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.OutputStreamWriter反之。两者参数可以指定编码,默认为操作系统默认编码,windows上是gbk。

  3. new InputStreamReader(System.in); //绑定到控制台

  4. FileOutputStream os = FileOutputStream(“test.txt”); //实例化文件输出流

  5. 管道流

    1. PipedInputStream和PipeOutputStream:输入输出可直接连接,配合线程使用。
    2. ByteArrayInputStream和ByteArrayOutputStream:用于操作字节数据数组流对象,它们是对应设备为内存的流对象。(注:不用定义数组(缓冲区),其自带一个数组缓冲区。)
    3. CharArrayInputStream和CharArrayOnputStream:用于操作字符数据数组流对象,它们是对应设备为内存的流对象。(释:文本文件数据读取到字符数组缓冲区,然后再将数据从字符数组缓冲区读出。)
    4. SequenceInputStream:当文件个数、对象(碎片)过多时,会产生过多的调用,导致效率下降。因此需要该容器,将流对象和(碎片)文件关联存储到容器中,再遍历容器获取流对象及读写操作。
  6. 其它:

    1. class MyException extends Exception{ }:自定义异常类。//继承自 Exception
    2. InputStream、OutputStream、Reader、Writer都是抽象类,不能直接new。
    3. 字节流、字符流两者之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String关联。

四、IO流实例

  1. 见项目示例五。
    
  2. 通过代码对指定文件目录进行遍历与操作

    import java.io.File;
    public class Exam07 {
    	public static void main(String[] args) {
    		//获取指定目录下内部内容
    		File dir = new File("D:");
    		String[] names = dir.list();
    		for(String name : names){
    //			System.out.println(name);
    		}
    //获取文件目录:	
    		File[] files =  dir.listFiles();	//获取当前文件夹文件对象
    		for(File file : files){
    			System.out.println(file.getName());
    		}
    //删除文件目录:
    		File dir1 = new File("D:\\删除目录");	//该方法无法删除文件夹中有内容的。
    	//计算机删除可以实现是因为,计算机简化操作,找到最内部文件,由内而外进行删除。
    		boolean b1 = dir1.mkdirs();		//创建多级目录
    		System.out.println("b1="+b1);
    	}
    }
    

End.

你可能感兴趣的:(Java基础学习,java)