前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是高级API+简单案例

什么是高级API+简单案例

作者头像
用户10196776
发布2022-11-22 14:29:57
4330
发布2022-11-22 14:29:57
举报

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盘下的文件:)

代码语言:javascript
复制
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文件夹内的所有文件)

代码语言:javascript
复制
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);
				}
			}
		}
	}
	

}

文件夹选中代码案例:

代码语言:javascript
复制
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获得当前系统的盘符

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.什么是高级API? 
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档