什么是高级API+简单案例

1.什么是高级API? 

1、API(ApplicationProgrammingInterface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

2、操作系统是用户与计算机硬件系统之间的接口,用户通过操作系统的帮助,可以快速、有效和安全、可靠地操纵计算机系统中的各类资源,以处理自己的程序。

3、应用程序接口又称为应用编程接口,是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。API的一个主要功能是提供通用功能集。API同时也是一种中间件,为各种不同平台提供数据共享。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。

2.高级API和低级API

根据MIDP的规范,LCDUI包的设计分成高级API低级API两种。由于手机一次只能显示出一个画面,因此每个画面只能在高级API与低级API之间择一使用。

高级API(即Screen的子类),具有很强的移植性,使用它写程序比较轻松,因为高级API所提供的组件都会由底层的虚拟机直接映射到该设备的原生用户界面,所以我们无法决定组件的颜色,字形和外观,因为这些都会由系统来决定,因此我们能对画面所能掌控的程度就比较低了。另外当我们使用高级API时,与用户的交互都会遵循该手机既有用户界面的操作方式。

低级API(即Canvas的子类和Graphics类)使用起来就相对复杂了,使用它们时,我们对整个手机的画面具有完全的控制权,同时也能决定用户该如何与程序交互,所以程序要考虑的事情就比较多了。由于每种设备都有不同的特性(不同的操作方式,屏幕大小,颜色等),因此一旦我用了低级API,那么程序的跨平台性就不能得到保证,相同的,执行结果也可能大不相同。

高级API和低级API都可以在同一个MIDlet中混合使用,组成一个应用程序中的每个画面。但同一个画面中,就只能在高级API和低级API中选择了。

能够显示在屏幕上的组件都是来自Displayable这个抽象类,而Displayable又派生出了 Screen类和Canvas类,其中Screen之后所构成的体系就是高级API,而Canvas之后所构成的就是低级API

关于高级API一些功能的代码案例:

(查询D盘下的文件:)

package com.zking.test;

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class Test {
	public static void main(String[] args) throws IOException {
		//实例化一个File对象,指向 D盘下的T416文件夹
		File file = new File("d://zking/T277.txt");
		System.out.println("创建文件:"+file.createNewFile());
//		System.out.println("删除文件:"+file.delete());
		System.out.println("判断文件是否存在:"+file.exists());
		System.out.println("获取File对象名称:"+file.getName());
		System.out.println("获取File对象的父级目录:"+file.getParent());
		System.out.println("获取File对象的目录:"+file.getPath());
		System.out.println("判断File对象是否是文件夹:"+file.isDirectory());
		System.out.println("判断File对象是否是文件:"+file.isFile());
		System.out.println("获取最后修改时间:"+file.lastModified());
		//用Date构造时间
		Date date = new Date(file.lastModified());
		System.out.println(date);
		/*
		 * 问:
		 * 	单位换算:
		 * 		二进制 b kb、mb、gb、tb
		 * 
		 * 	病毒库:
		 * 	
		 */
		System.out.println("获取File对象的大小:"+file.length());
		//实例化一个文件夹File对象
		File file2 = new File("d://zking");
		//获取文件夹内的所有File对象的名字
		String[] fileNames = file2.list();
		//遍历
		for (String sn : fileNames) {
			if(sn!=null)
				System.out.println(sn);
		}
		System.out.println("=======================");
		//获取到File目录下的所有File对象
		File[] files = file2.listFiles();
		for (File f : files) {
			System.out.println(f.getName());
		}
		System.out.println("============");
		//获取所有的根目录
		File[] fss =  file2.listRoots();
		for (File f : fss) {
			System.out.println(f);
		}
		
		//
		File file3 = new File("d://T416/驭梦组/tatata");
		System.out.println("创建文件夹:"+file3.mkdir());
		System.out.println("创建文件夹:"+file3.mkdirs());
		
	}
}

 案例2(//获取D盘下T416文件夹内的所有文件对象
        //找到D盘下T416文件夹内的所有文件)

package com.zking.test;

import java.io.File;

public class Test2 {
	public static void main(String[] args) {
		//获取D盘下T416文件夹内的所有文件对象
		//找到D盘下T416文件夹内的所有文件
		File file = new File("d://T416");
//		File[] files = file.listFiles();
//		//遍历files下的所有File对象的名字
//		for (File file2 : files) {
//			//判断是文件夹还是文件
//			if(file2.isDirectory()) {//如果是文件夹就继续获取文件夹内的所有File对象
//				File[] files2 = file2.listFiles();
//				for (File file3 : files2) {
//					//判断是否是文件夹
//					if(file3.isDirectory()) {
//						//获取file3内的所有File对象
//						File[] files3 = file3.listFiles();
//						for (File file4 : files3) {
//							//判断是否是文件夹
//							System.out.println(file4.getName());
//						}
//					}else {
//						System.out.println(file3.getName());
//					}
//				}
//				
//			}else {
//				System.out.println(file2.getName());
//			}
//		}
		//找到D盘下T416文件夹内的所有文件
//		showFileName(file);
		
		//删除File文件夹内的所有记事本文件
		delByType(file,".txt");
		
	}
	
	
	//写一个方法,接收一个File对象,打印File对象内的所有文件名
	/**
	 * 遍历目录下的所有文件
	 * @param file 要遍历的File对象(目录)
	 */
	public static void showFileName(File file) {
		//获取File目录下的所有File对象
		File[] files = file.listFiles();
		for (File file2 : files) {
			if(file2!=null) {
				//判断File对象是不是文件夹
				if(file2.isDirectory()) {
					//如果是文件夹 就继续获取文件夹内的File对象,然后打印文件的名字
					showFileName(file2);
				}else {
					System.out.println(file2.getPath());
				}
			}
		}
	}
	/**
	 * 删除文件
	 * @param file 检索的目录
	 * @param type 要删除的文件类型
	 */
	public static void delByType(File file,String type) {
		File[] files = file.listFiles();
		for (File file2 : files) {
			if(file2.isDirectory()) {
				delByType(file2,type);
			}else {
				//获取文件的名字
				String fileName = file2.getName();
//				System.out.println(fileName);
				//获取文件夹的后缀名(获取文件名的后四位字符)
				String fileType = fileName.substring(fileName.length()-4);
				//判断文件的后缀名 是不是 txt
				if(type.equals(fileType)) {
					//删除
					file2.delete();
					System.out.println("删除文件:"+fileName);
				}
			}
		}
	}
	

}

 文件夹选中代码案例:

package com.zking.test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestFile extends JFrame {
	public TestFile() {
		this.setTitle("文件选择");
		this.setSize(500, 500);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		
		JPanel jp = new JPanel();
		
		JButton jbfile = new JButton("选择文件");
		jp.add(jbfile);
		
		//添加事件
		jbfile.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub	
				JFileChooser jfc = new JFileChooser();
				//设置只能选中文件夹
				jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
				//显示文件选择器
				jfc.showDialog(null, "请选择路径");
				//获取选中目录
				File file = jfc.getSelectedFile();
				System.out.println(file);
			}
		});
		
		this.getContentPane().add(jp);
		this.setVisible(true);
	}
	
	public static void main(String[] args) {
		new TestFile();
	}

}

3.总结:

File类
在java中,不管是文件还是文件夹都是叫做File对象

createNewFile方法是创建一个文件
mkdir方法是创建一个文件夹
exists判断所关联的文件是否存在
delete删除所关联的文件
equals在File类中是比较的文件名字相同为true,不同为false
getAbsolutePath获得文件的绝对路径
getName获得文件名
getParent是获得文件的上一次父目录的名字
getParentFile是获得文件的上一次父目录的对象
isDirectory判断是否是目录
isFile判断是否是文件
isHidden判断是否是隐藏文件
lastModified获得文件的最后修改时间
length获得文件长度以字节为单位
list是获得文件夹下面的所有文件的名字列表
listFile是获得文件夹下面的所有文件的对象列表
renameTo是重命名
listRoots获得当前系统的盘符

 冲冲冲,今天就分享到这里啦!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6是ECMAScript6的简称,也叫做ES2015,是JavaScript的一种新的标准。它引入了许多新的语法特性和API,提高了JavaScript的开发效率和代码质量。下面是ES6的一些常用语法特性及简单案例: 1. 块级作用域声明 ES6中引入了let和const关键字,用于声明块级作用域的变量和常量。在块级作用域内声明的变量和常量只在该作用域内有效。 ```javascript { let x = 1; // 声明块级作用域变量 const y = 2; // 声明块级作用域常量 } console.log(x); // 报错,x未定义 console.log(y); // 报错,y未定义 ``` 2. 箭头函数 ES6中引入了箭头函数,用于简化函数的定义。箭头函数没有自己的this和arguments,它的this和外层作用域的this是一样的。 ```javascript const sum = (a, b) => a + b; // 箭头函数的简单用法 console.log(sum(1, 2)); // 3 const person = { name: 'Tom', age: 18, sayHi: function() { console.log(`Hi, my name is ${this.name}, I'm ${this.age} years old.`); }, sayHiArrow: () => { console.log(`Hi, my name is ${this.name}, I'm ${this.age} years old.`); // 报错,this未定义 } }; person.sayHi(); // Hi, my name is Tom, I'm 18 years old. person.sayHiArrow(); // 报错,this未定义 ``` 3. 模板字符串 ES6中引入了模板字符串,用于更方便地拼接字符串。模板字符串使用反引号(`)包裹,可以在其中使用变量和表达式,用${}包裹。 ```javascript const name = 'Tom'; const age = 18; console.log(`My name is ${name}, I'm ${age} years old.`); // My name is Tom, I'm 18 years old. ``` 4. 解构赋值 ES6中引入了解构赋值,用于更方便地从数组或对象中取值。解构赋值使用{}和[]包裹,用于匹配数组或对象的结构。 ```javascript const arr = [1, 2, 3]; const [a, b, c] = arr; // 解构赋值 console.log(a, b, c); // 1 2 3 const person = { name: 'Tom', age: 18 }; const {name, age} = person; // 解构赋值 console.log(name, age); // Tom 18 ``` 5. 扩展运算符 ES6中引入了扩展运算符,用于将数组或对象展开为多个参数。扩展运算符使用三个点(...)表示。 ```javascript const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const arr3 = [...arr1, ...arr2]; // 扩展运算符 console.log(arr3); // [1, 2, 3, 4, 5, 6] const person1 = { name: 'Tom', age: 18 }; const person2 = { ...person1, // 扩展运算符 address: 'Beijing' }; console.log(person2); // {name: "Tom", age: 18, address: "Beijing"} ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值