《文件和文件夹的操作》教学设计

2024-09-22 版权声明 我要投稿

《文件和文件夹的操作》教学设计(精选11篇)

《文件和文件夹的操作》教学设计 篇1

【教学内容】

新建自己的文件和文件夹,学习文件和文件夹的复制和粘贴、文件和文件夹的移动、文件和文件夹的删除。【学情分析】

对于小学四年级的学生来说,计算机相关专业术语理解起来难度大,虽然已经有第三课的知识做为本节教学的基础,但学生学起来可能还有很大难度。但是现在的学生已经很早地接解电子产和数码产品,操作能力相对以前的学生会强一些,因此,本节课要以“简说多做”为原则,充分发挥学生的学习能动性,可以在教学中充分发挥学生的互助带动性,让学生不仅学得知识,也能培养团结协作能力,更能让学生在学习中获得成就感,从而树立学习的自信心。【设计意图】

贯穿始终的依旧是“学以致用”的思想,遵从“简说多做”的原则,让学生在教师的组织引导下做课堂的主人。【教学目标】

1、建立以自己的爱好为名称的文件夹,在文件夹中建有若干个文件。

2、学习文件和文件夹的复制和粘贴。

3、学习文件和文件夹的移动。

4、学习文件和文件夹的删除。

5、通过学习,养成良好的文件和文件夹的使用习惯,明白学习和生活中做到 “井井有条”的重要性,并努力做到。【教学重点和难点】 教学重点:

文件和文件夹的新建、复制和粘贴、移动、删除等操作。教学难点:

1、文件和文件夹的复制和粘贴、文件和文件夹的移动、文件和文件夹的删除。

2、养成良好的操作习惯。【教学过程】

一、激趣导入

玩游戏:比一比谁最快?(找卡片游戏)师:同学们,通过这个游戏,你们知到了什么? 获胜者和输的学生各自发言,说说自己获胜和失败的原因。(学生讨论)

再以学生翻来覆去找作业和超市购物等生活实例让学生进一步感受“杂乱无章”和“井井有条”的效果。引导学生认识到:有条理地安置东西能提高效率。教育学生:要养成好习惯,把自己的书本或生活用品放置地井井有条。

师:好了,同学们,我们生活中用的电脑是不是也像一个属于你自己的超市呢?里面放着你所需要的各种东西,那我们是不是也要把里面的东西放置得有条理呢?今天我们就来学习一些操作,来把我们电脑里的东西好好处理一下,以方便我们使用。

【设计意图:联系实际生活,引出本节课的学习内容。】

二、展示学习目标

展示学习目标:

1.新建一个以自己喜好为名称的文件夹,并在里面放置几个文件;如:我爱听的音乐、我的照片、好看的电影等等。

2.自学课本13—16页,了解文件和文件夹的复制和粘贴、移动、删除等操作。

3、交流学习成果。【设计意图:让学生明确学习目标,先通过自学了解学习内容,并通过跟同学的交流、思考对本节课的中心内容做到心中有数。】

三、操作学习及总结(口头讲解+操作展示)

1、文件和文件夹的复制和粘贴。

对文件的复制就是在计算机中产生一个和源文件相同的文件。对文件和文件夹的复制方法是一样的。

方法一:右击文件或文件夹,选择“复制”,在目标位置右击,选择“粘贴”。

方法二:点击选中文件或文件夹,按快捷键Ctrl+c(按住Ctrl键不动,再按字母c.);在目标位置直接按下Ctrl+v。注意:在复制操作中,名字相同的文件或文件夹不能放在同一个位置。

2、文件和文件夹的移动。

方法一:右击文件或文件夹,选择“剪切”,在目标位置右击,选择“粘贴”。

方法二:点击选中文件或文件夹,按快捷键Ctrl+x(按住Ctrl键不动,再按字母v.);在目标位置直接按下Ctrl+v。

3、文件和文件夹的删除。方法一:右击文件或文件夹,选择“删除”,再单击“是”按钮,进行删除操作。

方法二:点击选中文件或文件夹,按Delete键,再单击“是”按钮,进行删除操作。

注意:被删除的文件并没有立即从计算机中清除,而是暂时存放在了“回收站”中,一旦我们需要这些文件时,可以恢复它们。

1、彻底删除:右击桌面上的“回收站”图标,选择“清空回收站”。

2、恢复:打开桌面上的“回收站”图标,右击文件或文件夹,选择“还原”即可将文件或文件夹恢复到原来的位置。

四、操作练习

运用所学操作合理整理电脑文件和文件夹:

请学生将老师事先准备好的一些杂乱的文件和文件夹进行分类整理。

五、知识再现,巩固强化。

带领学生共同回顾文件和文件夹的复制和粘贴、移动、删除等操作的方法。(强调操作注意事项和快捷键的用法)

六、思考与练习

1、写出移动文件和文件夹的两种方法。

2、整理自己的电脑。

3、还有其它的方法能完成我们今天所学的操作吗? 板书:

第四课 文件和文件夹的操作

复制和粘贴(两种方法):

1、右击,选择“复制”,在目标位置右击,选择“粘贴”。

2、点击选中,按快捷键Ctrl+c,在目标位置按Ctrl+v。移动(两种方法):

1、右击,选择“剪切”,在目标位置右击,选择“粘贴”。

2、点击选中,按快捷键Ctrl+x,在目标位置按Ctrl+v。删除(两种方法):

1、右击,选择“删除”,再单击“是”按钮。

《文件和文件夹的操作》教学设计 篇2

1 图形编辑

图形编辑子系统是MAPGIS软件的一个重要的操作平台, 它主要是通过对点线区文件的操作对图形进行矢量化, 然后再通过简单的处理使输入的图形更准确、更丰富、更漂亮, 以达到图形的最佳表现形式。图形编辑子系统也是MAPGIS软件最常用的一个模块, 它的功能主要包括文件的应用、文件的合并和文件的分离等。

2 文件的应用

在MAPGIS中, 文件是一组图元和数据信息的集合。MAPGIS的图形文件主要分为点文件 (扩展名为.wt) 、线文件 (扩展名为.wl) 、区文件 (扩展名为.wp) 三类。在图形矢量化的过程中, MAPGIS会将同类的图元自动放到相应的文件中。文件具有三种基本状态:关闭状态、打开状态、编辑状态。

关闭状态:相应文件中的图元不可见。

打开状态:相应文件中的图元可见, 但是不能对文件中的图元进行编辑。

编辑状态:相应文件中的图元可见, 并且能够对文件中的图元进行修改、移动、删除等编辑。

我们在矢量化的过程中可以通过适当地改变文件的状态来改变图形的显示以达到效率的最大化。一个工程中所有的文件都可以同时处于关闭状态、打开状态或者编辑状态, 但是我们在进行图元的添加的时候必须有相应的文件处于当前编辑状态, 并且在一个工程中同类文件有且只能有一个处于当前编辑状态, 这就能保证我们可以把图元准确的保存到相应的文件中。

3 文件的合并

文件的合并就是将同类的几个文件中的图元合并到一个文件中, 如将几个线文件合并为一个新的线文件。

在对图形进行矢量化的过程中, 为了更好的对图形进行矢量化, 一般情况下都会多创建几个线文件 (如:公路、等高线、地质界线、省界线等) 。在编辑过程中有可能会不方便对文件的整体管理, 因此, 有时需要将多个线文件合并为一个新的线文件。具体操作步骤为:同时选中需要进行合并的线文件, 点鼠标右键, 在弹出的快捷菜单中点击“合并所选项”, 弹出“合并文件”对话框, 点击对话框中的“保存为”按钮, 然后在新的对话框中点击“自定义文件”下的“文件名”按钮, 在弹出的“保存文件”对话框中输入合并后的文件名, 点击“确定”然后点击“合并”按钮, 合并完成。

点文件和区文件的合并与之相同。

4 文件的分离

将一个文件中的几类图元单独分离出来 (以线文件为例) 。

文件的分离主要是对图层的应用。MAPGIS中的图层是用户按照一定的需要或标准把某些相关的图元组合在一起构成一个图层。如地理图中水系构成一个图层, 铁路构成一个图层等。我们可以把一个图层理解为一张透明薄膜, 每一层上的物体在同一张薄膜上, 一张图就是由若干层薄膜叠置而成的。MAPGIS的图层与文件的关系为“多对一”的关系, 即一个文件包含多个图层。我们通过对图层的管理和应用来实现同类图元从文件中的分离。例如一个“综合”线文件, 里面包含有道路图元, 河流图元, 等高线图元, 房屋图元、地质界线等, 如果我们需要把里面的地质界线单独提取出来用以通过拓扑造区创建地质图, 首先需要我们在进行图形矢量化的时候要确保每一类图元与其它类图元要有一个不同的参数, 这也应该是我们作图时必须要遵循的一个原则, 这样有利于我们对图形进行调整, 我们可以随时使用“统改线参数”命令修改具有唯一参数的地质界线图元到一个单独的图层中。然后点击工具栏“图层”———“改当前层”, 在弹出的窗口中选择地质界线所在的图层后点击“确定”, 修改图元窗口中当前层为地质界线所在的图层 (默认0层) , 然后点击“图层”———“保存当前层”———“保存线”命令, 在弹出的窗口中文件名处输入“地质界线”, 确定即可把地质界线单独的以一个线文件的形式提取出来, 同样的方法也可以把其它类型的图元提取出来。

5 结语:

本文主要是讲MAPGIS中图形编辑子系统中对文件的操作, 目的主要是最大化的发挥MAPGIS软件在图形矢量化方面的优势, 为我们的工作提供帮助。

参考文献

《文件和文件夹的操作》教学设计 篇3

一、设备租赁进口需要准备的相关文件资料

1、《保证金审批表》和申请报告;

2、合同双方签订的租赁合同或协议(包含货物名称、品牌、型号、规格、数量、金额、租金、责任等内容)、发票、装箱单等单证;

3、海关认为必要时,企业还需提交设备使用说明书、企业法人营业执照、进出口货物收发货人报关注册登记证书或者其他有关证明文件;

4、其他海关认为有必要提供的单证。

二、设备租赁进口操作流程:

1、进出口收发货人或其代理人(以下简称“申请人”)向现场海关递交上述所列

需要提交的单证进行预审;

2、现场海关经“三级”审核,直接决定是否接受申请,并且在《进出境租赁货物审

批表》上予以批注

3、予以接受的,海关完成相关操作,准予接受报关手续;不予接受的,通知进出口货物收发货人或者其代理人,并且说明理由。

4、予以接受的,预审核通过后,按要求到银行交纳保证金

5、发送报关单数据,打印纸质报关单,连同已交保证金凭证报关(皇岗口岸可提前预报,在货物未到的时候提前做好报关手续)

6、领取保证金收据三、一次性缴纳税金计算方式:

1、保证金:按该批货物的货值*综合税率

2、一次性缴纳税金:分期缴纳租金总和*综合税率

操作系统课程设计文件管理 篇4

#include “stdlib.h”

#define MAX 1000 struct file/*普通文件的结构体*/ { //int type;//0无作用,当做一个空节点存在;1为记录型文件;2为执行文件

//前两个变量为文件的权限设置,1为允许操作,0为不允许操作

int write;//可写

int read;//可读

int length;//文件的长度

char ch[MAX];};typedef struct file File;

typedef struct ffile/*定义文件类型的结构体*/ { int type;//1为文件夹; 2为文件;

char name[20];//文件(夹)名字

int open;//文件打开标志,0为关,1为开

File iffile;//如果为文件时有的信息

struct ffile *parent;//指向上一级文件的指针

struct ffile *brother;//指向同级兄弟文件(夹)的指针

struct ffile *child;//指向下一级文件(夹)的指针 }Ffile;typedef Ffile *FFile;

/*typedef struct Open/*记录打开文件的结构体 { char name[20];//记录打开文件(夹)的名字

FFile* add;//记录打开文件上一级文件地址的指针 }Open;*/

//全局变量

FFile user1;//用户1 FFile user2;//用户2 FFile copyf;//记录被复制文件(夹)的上一级文件地址 //Open openf[20];//记录打开文件的队列

FFile init(void)/*初始化,创建根结点*/ { FFile c;c=(Ffile*)malloc(sizeof(Ffile));

c->type=2;c->open=0;//c->iffile.type=2;c->iffile.write=1;c->iffile.read=1;c->iffile.length=0;strcpy(c->name,“file1”);c->parent=NULL;c->child=NULL;c->brother=NULL;strcpy(c->iffile.ch,“NULL”);return(c);}

/*void initopen(){ int a,b;a=20;for(b=1;b<=a;b++){

openf[b].add=NULL;} }*/

//传递要显示文件的parent的地址

void show(FFile user)/*显示当前界面存在的文件*/ { user=user->child;if(user==NULL){

printf(“该文件内没有任何文件(夹)。n”);return;} printf(“n”);for(;user!=NULL;){ printf(“<%s”,user->name);if(user->type==2){

/*if(user->iffile.type==1)

printf(“/记录型文件/”);

else

printf(“/执行文件/”);*/

printf(“/%dk”,user->iffile.length);} else {

printf(“/文件夹”);

}

printf(“>n”);

user=user->brother;} }

void creatf(FFile user)/*创建文件 || 文件夹*/ { FFile parent;char ch[20];//FFile user0;//parent=(Ffile*)malloc(sizeof(Ffile));parent=user;printf(“输入要创建文件(夹)的名字:n”);

scanf(“%s”,ch);if(user->child==NULL){

user->child=(Ffile*)malloc(sizeof(Ffile));

user=user->child;}else {

user=user->child;

for(;;)

{

if(user->type==0)//开端的空结点,用新结点覆盖

break;

if(!strcmp(user->name,ch))

{

printf(“错误:该文件名已经存在,文件(夹)创建失败!n”);

return;

}

if(user->brother==NULL)

{

user->brother=(Ffile*)malloc(sizeof(Ffile));

user=user->brother;

break;

}

user=user->brother;

}

} }

//设置新文件(夹)的信息 strcpy(user->name,ch);printf(“选择创建对象:1文件夹; 2文件;n”);scanf(“%d”,&user->type);user->open=0;if(user->type==2)//添加文件信息 {

//printf(“选择文件类型:1记录型文件;2执行文件;n”);//scanf(“%d”,&user->iffile.type);printf(“能否对文件进行读:0禁止;1允许;n”);scanf(“%d”,&user->iffile.read);printf(“能否对文件进行写:0禁止;1允许;n”);scanf(“%d”,&user->iffile.write);//printf(“设置文件大小(单位:K):n”);//scanf(“%d”,&user->iffile.length);user->iffile.length=0;strcpy(user->iffile.ch,“NULL”);} user->brother=NULL;user->child=NULL;user->parent=parent;printf(“文件创建成功!n”);void deletechildtree(FFile user)/*删除子树--结合deletefile();使用*/ { if(user->brother!=NULL)//从下到上,从右到左删除

{

deletechildtree(user->brother);} if(user->child!=NULL){

deletechildtree(user->child);} if(user!=NULL){

free(user);} }

void deletefile(FFile user,char ch[20])/*删除文件 || 文件夹*/ { FFile p,parent;

int a;parent=user;if(user->child==NULL){ printf(“错误:删除失败,该目录下没有可删除的文件(夹)!n”);return;} user=user->child;p=user;for(a=1;;a++)//找出要删除文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:删除失败,当前位置没有该文件!n”);

return;}

if(a>1)

p=user;user=user->brother;} if(user->open==1)//判断文件的开关情况 {

} printf(“错误:删除失败,选择文件处于打开状态!n”);return;if(p==user)//被删文件在文件队列的开头 { if(user->brother==NULL)//该文件队列只有有一个文件

{

parent->child=NULL;

if(user->child!=NULL)//删除的是文件(夹)子树

{

deletechildtree(user);}else {

free(user);//删除的是文件(夹)结点

} printf(“删除成功!n”);return;} //文件队列有多个文件 p=user->brother;

} parent->child=p;p->parent=parent;if(user->child!=NULL){ deletechildtree(user);}else { free(user);} printf(“删除成功!n”);return;else//被删文件不在队列开头 {

if(user->brother==NULL)//被删文件在文件队列最末尾 { p->brother=NULL;if(user->child!=NULL){

deletechildtree(user);}else {

free(user);}

} printf(“删除成功!n”);return;

//被删文件在文件队列中间

p->brother=user->brother;

if(user->child!=NULL)

{

deletechildtree(user);

}

else

{

free(user);

} } printf(“删除成功!n”);}

FFile openfolder(FFile user)/*打开文件夹*/ {

} //int a,b;//a=0;/*if(user->child==NULL){ user->child=(Ffile*)malloc(sizeof(Ffile));user->child->type=0;user->child->brother=NULL;user->child->parent=user;user->child->child=NULL;

} /*for(b=1;b<=20;b++){ if(openf[b].add!=NULL)

a++;} if(a==20){ printf(“错误:打开列表溢出!”);return(user);} for(b=1;;b++){ if(openf[b].add==NULL)

break;}*/

user->open=1;//设置文件为打开 //strcpy(openf[b].name,user->name);//openf[b].add=user;printf(“文件夹打开成功。n”);return(user);//返回被打开的文件夹的地址

void openfile(FFile user)/*打开普通文件*/ { if(user->open==1){

printf(“错误:打开失败,此文件已经被打开!n”);

return;} user->open=1;printf(“普通文件打开成功!n”);}

FFile openff(FFile user)/*打开文件(夹)*/ {

char ch[20];FFile parent;

int a;printf(“选择要打开的文件名:n”);scanf(“%s”,ch);

parent=user;if(user->child==NULL){

printf(“错误:打开失败,该目录下没有可打开的文件(夹)!n”);return(parent);} user=user->child;for(a=1;;a++)//找出要打开文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:打开失败,当前位置没有该文件!n”);

return(parent);}

user=user->brother;} if(user->type==1){

printf(“开始打开文件夹。。n”);user=openfolder(user);} else if(user->type==2){

printf(“开始打开普通文件。。n”);

openfile(user);

user=user->parent;} return(user);}

void closefile(FFile user)/*关闭普通文件*/ {

char ch[20];int a;printf(“选择要打开的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:关闭失败,该目录下没有可关闭的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要关闭文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:关闭失败,当前位置没有该文件!n”);

return;}

user=user->brother;} if(user->open==0){

printf(“错误:关闭失败,该文件已经是关闭状态!n”);

return;} user->open=0;printf(“文件已经成功关闭!”);} /*没有文件夹关闭原因:

文件夹一打开就会跳向打开的新文件里 而文件夹关闭就会直接返回上一级的目录,若想整个文件夹都关闭,直接退出就可以了 因此不会直接关闭某个特定的文件*/

FFile backf(FFile user)/*返回上一层目录*/ { if(user->parent==NULL){

printf(“错误:返回失败,此处是最顶层目录!n”);

return(user);}

} user->open=0;user=user->parent;return(user);void readfile(FFile user)/*读文件*/ { char ch[20];int a;

printf(“选择要读取的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:读取失败,该目录下没有可读取的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要读取文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:读取失败,当前位置没有该文件!n”);

return;}

user=user->brother;} if(user->open==0){ printf(“错误:文件读取失败,该文件处于关闭状态!n”);return;} else if(user->iffile.read==0){ printf(“错误:文件读取失败,该文件受保护,禁止读取!n”);return;} printf(“读操作,该文件中的内容:n”);if(!strcmp(user->iffile.ch,“NULL”)){ printf(“该文件内没有可读内容!n”);return;

} } printf(“%sn”,user->iffile.ch);printf(“文件读取成功!n”);void writefile(FFile user)/*写文件*/ { char ch[20];int a;

} printf(“选择要进行写操作的文件名:n”);scanf(“%s”,ch);if(user->child==NULL){ printf(“错误:写操作失败,该目录下没有可写的文件!n”);return;} user=user->child;for(a=1;;a++)//找出要读取文件的所在位置 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:写操作失败,当前位置没有该文件!n”);

return;}

user=user->brother;} if(user->open==0){ printf(“错误:文件写操作失败,该文件处于关闭状态!n”);return;} else if(user->iffile.write==0){ printf(“错误:文件写操作失败,该文件受保护,禁止写!n”);return;} printf(“写操作,输入内容:n”);scanf(“%s”,user->iffile.ch);user->iffile.length=strlen(user->iffile.ch);printf(“文件进行写操作成功!n”);

FFile copyfile(FFile user,FFile copyf)/*拷贝文件*/ { char ch[20];int a;printf(“选择要进行拷贝的文件(夹)名:n”);scanf(“%s”,ch);

if(user->child==NULL){

printf(“错误:拷贝失败,该目录下没有可拷贝的文件!n”);

return(NULL);} user=user->child;for(a=1;;a++)//找出要拷贝文件的所在位置,用user替代

{

if(!strcmp(user->name,ch))

break;

if(user->brother==NULL)

{

printf(“错误:拷贝失败,当前位置没有该文件!n”);

return(NULL);

}

user=user->brother;} copyf=user;

} printf(“拷贝成功!n”);return(copyf);FFile fenpei(FFile copyf,FFile user,FFile parent)/*粘贴时,给已拷贝项分配内存空间,以及给对应信息赋值*/ { user=(Ffile*)malloc(sizeof(Ffile));

//parent对child的连接,以及brother之间的连接已经完成if(copyf->brother==NULL && copyf->child==NULL){

user->parent=parent;

user->child=NULL;

user->brother=NULL;}

else{ if(copyf->brother!=NULL){

user->brother=fenpei(copyf->brother,user->brother,parent);//brother连接,兄弟节点有同一个父结点

user->brother->parent=user->parent;} else { user->brother=NULL;} if(copyf->child!=NULL){ //parent=p;user->child=fenpei(copyf->child,user->child,user);

user->child->parent=user;//完成child对parent的连接

//child连接,自己孩子的父结点就是自己

} else {

user->child=NULL;

user->child->parent=user;} }

//设置结点对应的信息

strcpy(user->name,copyf->name);user->open=copyf->open;user->type=copyf->type;if(user->type==2){

user->iffile.length=copyf->iffile.length;

user->iffile.read=copyf->iffile.read;

//user->iffile.type=copyf->iffile.type;

user->iffile.write=copyf->iffile.write;

strcpy(user->iffile.ch,copyf->iffile.ch);}

return(user);}

void prastefile(FFile user,FFile copyf)/*粘贴文件*/ //user是要粘贴的地方,copyf是要粘贴的内容,//有相同文件名的会判断会不会覆盖,或者是重命名 //在原树中进行新建操作 { int i,j;char ch[20];FFile p,user0,parent;parent=user;//记录父结点

user=user->child;

p=user;//记录当前结点的前一个brother结点 strcpy(ch,“NULL”);if(copyf==NULL)//判断有没有拷贝文件 {

printf(“错误:粘贴失败,还没有拷贝任何文件(夹)!n”);

return;}

//p=(Ffile*)malloc(sizeof(Ffile));//p->child=(Ffile*)malloc(sizeof(Ffile));//先给粘贴项分配内存空间

//p->child=fenpei(copyf,p->child,p);

if(user==NULL)//当前位置没有任何文件结点

{

} user=fenpei(copyf,user,parent);//是他自己要分配,不是孩子结点!!parent->child=user;user->brother=NULL;user->parent=parent;return;//该位置没有任何文件 for(j=1;;j++){ if(user->type==0)//开端的空结点,用新结点覆盖,即:当前位置没有文件结点

{

user=user->parent;

deletechildtree(p);

user=fenpei(copyf,user->child,user);//返还增加的结点

user->brother=NULL;

user->parent=parent;

parent->child=user;

} return;if(!strcmp(user->name,copyf->name)){

printf(“提示:该文件名已经存在!n”);

printf(“请重命名文件:n”);

printf(“输入新文件名:n”);

scanf(“%s”,ch);

} if(user->brother==NULL)//普通的退出条件

{

break;} p=user;user=user->brother;} user->brother=fenpei(copyf,user->brother,user->parent);user->brother->parent=user->parent;//若要更名,粘贴分配完内存空间返回时再改变

if(strcmp(ch,“NULL”))

strcpy(user->brother->name,ch);printf(“粘贴成功。n”);}

void showroute(FFile user)/*显示当前路径*/ { if(user->parent!=NULL){

showroute(user->parent);} printf(“%s/”,user->name);//路径中每个结点的输出项 }

void change(FFile user){ char ch[20];int a,b;

if(user->child==NULL)

{

} printf(“错误:属性修改失败,该目录下没有可修改的文件!n”);return;printf(“选择要进行属性修改的文件(夹)名:n”);scanf(“%s”,ch);user=user->child;for(a=1;;a++)//找出要拷贝文件的所在位置,用user替代 { if(!strcmp(user->name,ch))

break;if(user->brother==NULL){

printf(“错误:属性修改失败,当前位置没有该文件!n”);

return;}

user=user->brother;} if(user->type==1){ printf(“错误:文件夹不能进行属性修改!n”);return;} for(;;){

printf(“1.修改读权限;n”);printf(“2.修改写权限;n”);printf(“3.返回;n”);printf(“选择操作:n”);scanf(“%d”,&a);if(a==1){ printf(“0.禁止;

1.允许;n”);printf(“请选择:n”);scanf(“%d”,&b);user->iffile.read=b;printf(“修改成功!n”);} else if(a==2){ printf(“0.禁止;

1.允许;n”);printf(“请选择:n”);scanf(“%d”,&b);user->iffile.write=b;

}

} printf(“修改成功!n”);} else if(a==3){ return;} else { } printf(“错误:没有该操作!n”);void main()/*主函数*/ {

FFile d,e,f;//f记录当前显示界面父结点位置 int a,b,c;char ch[20];a=0;printf(“******************************目录******************************n”);printf(“

1.选择用户n”);printf(“

2.退出n”);

printf(“****************************************************************n”);for(;;){

printf(“选择操作:n”);scanf(“%d”,&a);if(a==1){ printf(“选择用户:n”);printf(“1.user1;n2.user2;n”);scanf(“%d”,&b);break;} else if(a==2){ printf(“欢迎使用。n”);exit(0);//系统退出的操作码 } else { printf(“错误:没有该操作!n”);

} } //初始化打开列表 //initopen();//初始化各个用户的信息

//copyf=(Ffile*)malloc(sizeof(Ffile));//copyf=NULL;copyf=NULL;user1=init();strcpy(user1->name,“user1”);user2=init();strcpy(user2->name,“user2”);d=init();e=init();user1->child=d;user2->child=e;d->parent=user1;e->parent=user2;printf(“%d”,user1->child->type);if(b==1){ printf(“已经进入user1系统n”);f=user1;show(user1);}else{

} printf(“已经进入user2系统n”);f=user2;show(user2);

for(;;){ printf(“****************************************************************n”);printf(“1.创建文件(夹)

5.读文件

9.显示当前路径

n”);printf(“2.删除文件(夹)

6.写文件

10.返回上一层目录

n”);printf(“3.打开文件(夹)

7.拷贝文件

11.改变普通文件属性n”);printf(“4.关闭普通文件

8.粘贴文件

12.退出n”);printf(“****************************************************************n”);printf(“选择操作:n”);scanf(“%d”,&c);if(c==12){

break;}else if(c==1){ creatf(f);} else if(c==2){

printf(“选择要删除的文件(夹)的名字:n”);scanf(“%s”,ch);deletefile(f,ch);} else if(c==3){ f=openff(f);} else if(c==4){ closefile(f);} else if(c==5){ readfile(f);} else if(c==6){ writefile(f);} else if(c==7){ copyf=copyfile(f,copyf);} else if(c==8){ prastefile(f,copyf);copyf=NULL;} else if(c==9){ printf(“路径为:n”);showroute(f);printf(“n”);} else if(c==10){

}

f=backf(f);

教案:文件的操作 篇5

一、教材分析:本课以人物对话形式引出文件操作与文件夹操作一样,可以有新建、复制、移动、删除等操作。本课进一步熟练菜单及按钮操作。文件选定及复制是本课教学重点。本课能进一步使学生掌握计算机基本知识和技能,进一步激发学生学习的兴趣,增强他们的信息意识。

二、学情分析:小学生知识形成的特点是:直观感知——实践操作——形成表象——构建新知。学习本课时,其中复制文件,移动文件,文件重命名等操作与第六课中文件夹的相应操作类同,学生已具备了一定的操作能力,但对文件建立及复制还是第一次接触。教学中,我注重给予学生创造性发展的天地,采用“知识迁移”与“任务驱动”结合的教学方法。在“任务驱动”下,以“知识迁移”方式进行,由学生交流、总结操作方法,教师进行归纳,规范操作方法。

三、教学目标设计:

知识与技能——学会文件基本操作,掌握选定一个和多个文件的方法;掌握删除、复制和移动文件的操作方法;能够理解移动与复制的区别。

能力和方法——增强学生利用信息技术自主学习能力,培养学生自主操作能力,合作学习和创新思维能力。

情感态度和价值观——培养学生对信息技术的热爱和良好的兴趣。

四、教学过程()设计:

内容安排

教师活动

学生活动

设计意图

备注

导入新课

出示讨论话题:“机灵从计算机C盘的My Document文件夹里找到了她喜欢的图画文件,想把图画文件保存到软盘上带回家。可是“机灵”不会操作,我们大家一起帮她好吗?今天我们学习文件操作。

先设置情境,提出问题,引起学生探究的兴趣。讨论时注意纪律。

创设情境,为导入新课作准备,引起学生思考。

学生此时充满了兴趣。

学习

一. 任务驱动:

出示学习任务:1、会选定文件,对文件进行复制、移动、删除和重命名。2、观察复制文件和移动文件的区别。

二. 直观教学

(一) 选定文件

1、情境设置:在C盘的My Documents文件夹中,机灵要选中图1.bmp 图3.bmp 图5.bmp这三个文件,怎么办?

2.师边讲边演示:(1)首先要选中这三个文件,但是

单击鼠标每次只能选中一个文件,这时按下Ctrl键不放,再单击图1.bmp图3.bmp 图5.bmp文件,松开Ctrl键,再单击文件。

(2)对选定连续的文件,可以单击第一个文件,然后按住Shift键不放,再单击最后一个文件,松开Shift键,则全部文件被选定。

3.选中文件,对文件进行复制、移动、删除等操作。这些操作和我们上节课学过的对文件夹的操作很相似,你能试着操作一下吗?

4.引导观察复制和移动文件有什么区别。

5.重命名文件,怎么操作呢?轻轻按一下右键,你就知道啦。

明白自己这节课的学习任务

生认真思考,带着任务,学习新课内容。

生操作,看到选定的文件变成蓝色。

生分组操作、讨论观察。

学生分组操作,自己发现如何对文件复制、移动、删除等方法。

生思考分析,在小组内讨论。

生在师引导下进行重命名的操作。注意发现规则,总结。

2—3名学生上台演示反馈。(鼓励学生采用多种方法)

让生明确目标,带着任务学习。

利用知识迁移,易于让学生自主探究,增强主动学习的欲望。

培养观察、比较、探索的合作学习的能力。

通过实践操作把理论知识转变为学生的技能。做好“补差”工作,让每名学生都能完成任务。

小结

学生成果展示(选定,复制,移动,重命名,删除文件)各组演示对单个或多个文件的各种操作。

反馈及小结;机灵想把C盘上的My Documents文件夹中的图2.bmp图4.bmp复制到软盘中,怎么办?

学生汇报学习情况。

生回答问题。

“提优”表扬优秀的学生,鼓励其他学生,向他们学习。

实施效果:90%生能较熟练地对文件进行操作,进行选定,删除,复制和移动,以及重命名,知道移动和复制文件的区别。

课后反思:1.创设情境,引发疑问。

上课伊始,创设“问题讨论”情境,充分调动学生的学习兴趣,寓教于实际问题中,把学习知识与生活实际联系起来,激发求知欲,使学生很快进入学习状态。

2.知识迁移,精讲多练。

信息技术课主要目的是培养学生使用信息,处理信息的能力,在本课中我精练地讲解了本课内容,加上朗诵示范,多让学生操作,去实践,去发现,去操作,去创新。同时不断引导学生发现利用已学知识迁移,形成新知。最后,“提优补差”,让每名学生完成本节学习任务。

3.任务驱动,自主体验。

《文件和文件夹的操作》教学设计 篇6

Windows操作系统中,可以把某一类型的文件与打开此类文件的程序进行关联,在资源管理器中双击此类文件,则系统直接调用关联程序打开文件。关联程序对文件的操作是通过接受命令行参数实现的,但是关联程序打开多个文件有两种方式,例如,用Windows记事本打开多个文本文件,每个文本文件都启动一个单独的记事本程序的实例;而如果使用UltraEdit打开多个文本文件,UltraEdit具有多文档编辑能力,所有文件都是用同一个程序实例打开的。

如何应用系统Atom Table实现使用单一程序实例进行关联文件多文档处理,其中主要实现两个功能:

(1)是只运行程序的一个实例。

(2)把后启动的程序实例的命令行参数传递给第一个实例,以进行相应的处理。

2 Atom Table

Atom Table是Windows系统定义的表,包含了字符串和相应的标识,其中的标识是一个16位整数,称为Atom,相应字符串称为Atom Name。系统Atom Table分为本地(Local atom table)和全局(Global atom table)两种,本地Atom Table只能由创建它的应用程序自己访问,而全局Atom Table可以被所有应用程序访问。Atom分为两类:字符串(string)atom和整数(integer)atom,文中应用字符串atom,其取值范围为0xC000到0xFFFF,并且字符串的长度不能超过255字节。

在Atom Table中,Atom Name是惟一的。每一个Atom Name拥有一个参考计数,当往Atom Table加入一个字符串时,系统搜索整个Atom Table,如果没有此字符串,此字符串被加入Atom Table,参考计数被置为1并返回新的Atom;如果此Atom Name已存在,则增加参考计数值并返回相应的Atom。相应地,在Atom Table中删除Atom Name时,参考计数值减1,当参考计数为0时,Atom Name才从表中删除掉。

应用程序可以使用全局Atom Table与其他应用程序进行动态数据交换(DDE),进行DDE时仅仅将一个Atom传递给其他程序,而不必把实际的字符串传递过去。其他应用程序可以根据接收到的Atom通过查询Atom Table取得所需的字符串。

应用程序可以在Atom Table中查询一个指定的字符串是否存在,并取得对应的Atom;也可以根据Atom取得所对应的Atom Name。全局Atom Table所用到的系统函数主要有:

3 原理

使用Delphi语言编写文本处理程序,并将其关联到.txt文件,作为纯文本文件的默认打开程序,应用上述编程原理。下面是具体编程方法。

3.1 单一实例

有很多方法可以实现只允许同时运行应用程序的一个实例,如创建互斥体(使用系统函数CreateMutex),本文应用Atom Name的惟一性来实现。定义一个字符串作为程序已有实例运行的标识,如MyAtomName='Sucx_Atom_Program_Is_Runing',程序开始运行时首先检查此Atom Name是否存在,若不存在,则为程序的第一个实例,需要创建新的atom;若已存在,则已有实例在运行,需要将参数传递给先前实例后自身退出。代码如下:

3.2 传递参数到先前实例

当新启动的应用程序判断已有实例在运行时,必须将自己得到的命令行参数传递给先前的实例,本文中是应用Atom进行DDE。为了在不同实例之间进行DDE操作,需要自定义一个消息并在实例之间传递,例如,消息定义为WM_MYMESSAGE=WM_USER+53。所要做的工作有:

(1)将命令行参数添加到Atom Table中,并取得Atom。

AcmdAtom:=GlobalAddAtom(GetCommandLine);

(2)查找先前实例的窗口句柄,并传递消息。此处,先前实例窗口类型为'TMyForm01'。

(3)删除Atom并退出。

为了响应消息,获取Atom,需在主Form中定义消息响应的方法,在此方法中完成对所得到的文件名的处理:

至此,编程要点已介绍完毕,下面给出完整的演示程序源代码。演示程序的功能是只启动一个实例,在资源管理器中双击某一类型的文件时,演示程序将文件名依次显示出来。演示程序主表单中加入了一个Memo对象,命名为Memo01,已在Delphi 6和7中编译、运行通过。

4 程序代码

4.1 主程序

4.2 单元代码

5 结语

使用Atom Table的特性,实现了文件关联多文档操作的两个基本功能,即只启动应用程序的单一实例,和应用程序实例间的进行DDE以传递命令行参数。这样就实现了在系统中使用单一实例打开多个关联文件,类似于UltraEdit编辑器软件的功能。本演示程序中只是把接收到的命令行参数显示出来,实际编写软件时,取得了文件名,就可以对文件进行各种操作。

摘要:简要介绍了Windows系统中Atom Table的特点和操作函数,并应用Atom Name的惟一性和全局Atom Table进行程序间DDE的能力,实现了应用程序在系统文件关联操作时,使用单一实例进行多文档处理的功能,并且给出了演示程序代码。

关键词:Atom Table,DDE,文件关联,多文档

参考文献

《文件和文件夹的操作》教学设计 篇7

教学内容分析

《2.7文件夹管理》、《2.8文件管理》这两节内容选自《计算机技能教程》(电子工业出版社)一书。

Windows文件夹和文件管理是教材中Windows XP部分的一个重要内容,这两部分知识主要介绍了Windows文件夹和文件的命名与管理的方法和技巧,其操作和知识点又有大量的相似性,因而将两节内容并入一节进行统一讲练,这样一方面对重复性的知识一次讲清,另一方面又使学生对两者进行了比较、区分。通过讲练使学生对Windows的基本存贮方法、文件管理方法形式、文件访问、信息处理分类等有一个初步的了解认识,进而使学生对Windows基本操作有一个更深入的了解,更进一步地掌握其操作技巧和相关知识,增长了学生的技能、知识,激发其学习兴趣,并根据学生不同需求,使学生了解掌握更多的计算机软件功能和使用方法,培养其自学意识、自学方法,不断吸收更多的新养份,同时也培养了学生主动思维、灵活处理的意识能力。

学生分析

学生已经具有了计算机操作的基本技能,对Windows操作系统已经不再陌生。

这个年龄的学生乐于看到新奇的事物,喜欢进行操作、实践,愿意展示自己与他人交流,希望能有所创新、与众不同,成为众人的焦点。因而在教学中重视观察和实验,开展合作学习,调动其主观能动性,发掘其潜在的意识、个性思维,更能激发和培养学生的学习兴趣、创造性和积极思维的意识。

设计理念

根据新课程倡导的理念,计算机课教学应改变过分强调知识传承的倾向,传授知识的系统性、传统的灌输式,让学生经历探究的过程,学习科学的研究方法,培养实践能力、创新意识以及科学探索精神。在具体的教学中,注意不同学科间知识与研究方法的联系与渗透,使学生关注计算机领域的新进展和新思想,了解计算机学科和其他基础学科的相互联系,逐步树立学生正确的学习态度、学习方法,科学的人生观、世界观。

教学目标

1、了解文件夹、文件的命名规则。

2、了解系统指定的名称含义。

3、掌握文件夹、文件的创建方法,并能正确识别各类文件。

4、掌握文件夹、文件的管理方法。

5、进一步培养合作意识和自主探索的精神,体会在解决问题的过程中与他人合作的重要性。

6、经历猜想、实验(操作)、确认(比较)、教师讲解演示等活动,从中获得解决问题的经验,积累计算机学科自学的方法、思路。

教学重点:文件、文件夹的命名、管理。

教学难点:文件、文件夹的管理。

重、难点解决措施:实例讲解,学生完成常见文件的识别与命名。

本课采用学生合作学习、动手实践、自主探索和教师利用多媒体教学网络演示、指导、电子课件相结合的教学形式。

教学流程

一、情景引入

师:当我们打开电脑时,经常看到一些图标,上网下载歌曲时也经常要选一些类型,那么同学们对它们的含义是否清楚哪,它们有何不同,意义上又有何区别哪,下面就让我们一起来了解一下。

要求学生:打开计算机,并浏览计算机,从中找到一些图片,并根据自己的喜好设置为桌面。

(学生根据学过、接触到的知识,能够找到一些图片,并改变桌面变景。)

师:大家看我们找到的图片格式相同吗,有没有什么区别?

生:不同,有的图片是可能动的,有的是静止的。

师:那么我们同学是否想知道这是为什么哪?

(学生想了解,并想知道其区别是什么)

师:好!下面我们就来了解一下Windows是如何管理文件和文件夹的。

(学生活动:打开教材,打开计算机中“我的电脑”窗口)

二、新课学习

1.文件夹与文件的区别、创建

师:同学们根据以往的练习,我们在“我的电脑”或“资源管理器”中经常看到文件夹和文件,对它们我们已经不陌生了,那么大家是否知道它们的图标和名称为何不同,到底有什么区别哪,下面我们就打开一个磁盘看一看。

学生活动:同学们在计算机上操作、互相讨论、动手实践、探索。

教师活动:指导、多媒体演示。

师:同学们通过刚才的操作,哪一位同学能说一说文件夹与文件有何区别?(学生根据自己已有的知识回答,教师重复、精炼语言,由一位学生归纳总结。)区别:文件夹主要是用于存放文件的,文件是存放信息的最小单元,有一个比喻来说,文件夹和磁盘相当于一个大树的树杆和树枝,而文件相当于树叶。

(教师:利用多媒体出示磁盘的树型目录结构。)2

师:同学们通过刚才的操作,大家想一想在日常使用中我们能否利用文件夹来

树管理自己的东西,以便于平时的使用和管型理。目(学生们互相讨论研究,动手实践,录回答自己将家里的机器中建立了音乐、游结戏、软件等文件夹,用于管理,并总结这构样做的好处。)

师:那么同学们现在能否在计算机上建立几个文件夹或文件哪,创建后再给它们起个名字?

(学生动手实践,并根据教材P29页中指导创建文件夹和文件)

学生根据操作,提出问题:在起名时到底可以打多少个字,为什么有些符号有不了。

2.文件夹、文件的命名规则 格式:文件名.扩展名

1~255 0~4个字符

文件名可以是英文字母、数字、汉字和一些常用符号,但有一些不能用,比如:/、、*、?等。

扩展名相当于外国人或中国人的姓。主要是用于标明文件的性质,比如是音乐、视频、图片,还是文本。

师:同学们平时我们上网下载音乐时经常需要选择不同类型,那么它们具体指什么哪?

学生回答:可以选择不同格式的音乐,将其下载到手机到MP3上欣赏。师:那么同学们还知道那么文件的扩展名哪,它们有何意义、区别?(教师用多媒体出示常见音乐、视频、图片等扩展名,并帮助学生分析。)音乐:mp3、wav、wma、fla、rm、mid

歌词:lrc 视频:mpg、dat、mpv、miv、avi、vob

电子书:txt、pdf 图片:jpg、gif、pcx、bmp 师:那么同学们我们能通过什么方法,知道更多的扩展名哪?下面就以几个软件为例给大家介绍一下。如“千千静听”、“Media player”、ACDSEE图片浏览等软件,利用其中的“文件”打开功能中的“文件类型”选项来查看各类的常用扩展名。

(出示几个对话窗口,并利用软件演示,打开不同类型的文件。)

千千静听 打开文件窗口

Media Player打开文件窗口

(学生根据教师讲解、演示,自己动手在自己的计算机上操作,练习查找不同类型文件,并查看其内容。)

师:同学们通过刚才的练习,大家对文件的扩展名的意义是否了解了哪,那么在各种打开窗口中,我们看到的“*.mp3,*.mod等”中的“*”号有什么作用哪,前面我们也提到过给文件夹或文件命名时不能用“*,?”号,其有何实际意义哪?下面就以“查找”文件为例给同学演示一下。

(教师利用多媒体演示查找mp3格式音乐过程,学生实践操作。)

(并介绍“?”号的使用。)

(学生小结这两个符号的功能和使用方式,教师归纳总结。)

区别:“*”代替所在位置的任意多个字符,“?”代替一个字符。

(学生练习有关操作,进一步掌握扩展名的含义,并小结文件命名规则,以及扩展名的实际应用。)

3.复制、移动和删除操作

师:同学们,在以往的操作中大家对复制、移动和删除操作是否已经了解了哪?(由于现在学生多数在中小学已经学过计算机知识,并经常接触计算机,因而这部分知识简单总结一下就可以了。)

学生们多数表示已经会了,并总结键盘快捷键和鼠标操作两种方式。师:在这里大家需要记住两个键盘键的使用技巧,一个是“Ctrl”,另一个是“Shift”,前者是选择不连续多个文件,后者是选择连续多个文件。

(教师与学生共同实践,练习两个键的使用方法。)师:同学们,在上网下载文章时,Shift键有没有用? 学生:有用,可以用它快速选择一段连续的文本,与用鼠标左键拖曳快多了。(学生练习用Shift键选取一大段连续文本,进一步掌握这个键的功能,同时在其他软件试用,从而扩展了学生的知识面,更使学生了解了计算机软件操作上的相通性,为进一步学习奠定了基础。)

4.创建快捷方式

师:同学们,在计算机桌面上、开始菜单中我们看到了很多快捷方式,它们可以帮助我们快速启动不同的软件,那么大家是否会自己创建一个哪?

学生:会,可以用鼠标右键中的“发送”功能中的桌面快捷方式来创建。师:但是,如果我们不想把所有快捷方式都建在桌面上,而是想建在其他位置怎么办哪?

学生:那只能用鼠标右键中的“新建”→“快捷方式”来建立了。(师生共同练习这种方式。)

师:同学们,这样做怎么样,实现起来容易吗,能记住吗?

(大多数学生表示比较难,不容易记住。)师:同学们,现在我们试一下鼠标右键拖曳,看看会有什么样的结果。

(如左图,主要是复制、移动、创建快捷方式这几项功能,并与学生共同练习使用。)

鼠标右键拖曳菜单

5.相关软件使用(补充内容)师:同学们,当我们想在网上查找一些mp3格式的音乐,并将其下载到手机、mp3、mp4上时,但又找不同这样格式的文件,只有其他格式的,那么这时该怎么办哪?

学生:网上应该有转换工具吧? 师:同学们说的对,网上确实有这类软件,比如mp3格式转换器、mp4格式转换器等。下面我们以音乐为例,介绍一下mp3格式转换器的功能与使用方法。

(教师利用多媒体演示使用方法,师生共同练习使用软件。)(并简单介绍mp4、图片等转换工具使用,并归纳各种软件使用上的相通性,进一步加深学生对计算机学习方法的了解,培养学生自学意识能力。)

三、小结与巩固练习

[1.培养学生归纳意识。2.培养学生计算机学科自学能力。]

小结:(略)

(对本节课主要内容归纳总结,由一名或多名学生共同完成)巩固练习:学生利用剩余时间完成本节课中所出示的实例,完成教材中实训9和实训10内容,练习文件夹和文件的基本操作。

四、布置作业

1.阅读理解教材第29页至第32页。

2.完成教材第30页“实训9”和第32页“实训10”。

五、探究问题

利用上机练习和课后时间,在计算机中查找音乐文件,并将自己喜欢的不是mp3格式的音乐转换为mp3格式音乐,并利用介绍过的软件对音乐进行截取,制作手机铃声。[板书设计]

windows文件夹和文件管理

1.文件夹与文件的区别、创建

3.复制、移动和删除操作 2.文件夹、文件的命名规则

4.创建快捷方式

格式:文件名(主名).扩展名

鼠标右键拖曳

1~255

0~4 个字符

5.相关软件使用

教学效果预测

通过这样的教学设计,在以学生为主体的前提下,学生充分活动起来参与到新课学习中,由于所设问题、所讲内容,多为学生在日常生活中常见之问题,因此大部分同学能积极的参与进来,积极思考、积极参与,及时反馈信息,使教师能及时有针对地讲解,强调学生不能熟练掌握的知识点和技能,使积极参与者能准确掌握每一个重要知识点及技能。

在教学中预计百分之八十的学生能掌握本节的主要知识点,同时对其他相关知识也能有不同程度的了解。对于学生所不能熟知的问题,利用上机实践时间结合教材中实例,以及教师所扩展内容,在学生亲自动手、教师指导下均能掌握本节课主要知识点。

这节课在以往的传统教学中,往往是教师利用多媒体演示,反复演示教材中的每一个知识点,严格按照教材顺序教授相关知识。然后用大量的上机操作让学生在机房重现教师上课的内容,这样虽然教师讲课比较轻松,知识传授与课本不差分毫,但学生对所学知识只能是有一个大致的了解,而不能准确记忆教师所讲的所有知识点,更无法发现学生的不足,以及操作中的不规范。对学生自学能力的培养、实践动手能力的增强也无益。

《文件和文件夹的操作》教学设计 篇8

1 技术分析

该系统运行后,将预先设置的磁盘路径中的文件资源列出,如图1所示。包括文件/文件夹名称、大小、类型、修改日期、操作(文件由此操作),模拟了Windows资源管理器的显示样式,在此页中用户可以建立文件和文件夹、可以删除文件、对于文件夹类型的资源,单击能进入资源所指向的路径下显示其中的资源,同时可以由当前路径返回上级目录。

采用JSP和JavaBean技术实现,其中JSP文件负责显示,充当视图功能,JavaBean负责文件的读取、删除、创建。实现过程中使用了Java的File类,File类在java.io包中,常用的方法有以下几个如表1所示。

2 文件管理器实现

文件管理器的界面如图2所示。

2.1 主页面文件index.jsp

2.2 文件信息读取类 (JavaBean) FileOperate.java

2.3 删除文件或目录deleFile.jsp代码

2.4 创建文件和文件夹createFile.jsp代码

3 总结

利用该文件管理器可以将目录结构 (包含文件) 保存到文本文件中, 经过改进可以将目录信息写入数据库, 需要时提取方便。该功能可以嵌入到提供网络空间的服务中, 实现用户对所属空间的文件管理。

参考文献

[1]邓子云, 张赐.JSP网络编程从基础到实践.电子工业出版社, 2006.

Python 文件操作实现代码 篇9

python操作日期和时间的方法

布同自制Python函数帮助查询小工具

python中getattr函数使用方法 getattr实现

python生成指定长度的随机数密码

python正则表达式re模块详解

python快速排序代码实例

python实现k均值算法示例(k均值聚类算法)

python实现探测socket和web服务示例

python 切片和range用法说明

python命令行参数sys.argv使用示例

热 点 排 行

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 文件和路径操作函数小结

《文件和文件夹的操作》教学设计 篇10

键操作

众所周知,OPPO手机主打的功能一直都是拍照,也是依靠着高颜值的外表以及超强大的拍照功能俘获了年轻一代人的青睐。基本上大部分人购买OPPO手机都是冲着它的拍照功能去的。相信很多拥有OPPO手机的小伙伴都是喜爱拍照的,那么,手机中那些美美的、有意义的照片肯定不在少数,如果由于操作失误导致一些重要的照片误删了该怎么恢复呢?

操作步骤

第一步:我们在不小心删除了手机中手机照片直接可以去相册里面的最近删除看看,那里可以保存1个月的删除记录,如果没有直接打开微信搜索“极速数据恢复”小程序,点击进入。

第二步:打开小程序后,我们会看到微信、QQ、短信、通话记录、联系人等数据恢复内容,我们这里点击“图片恢复”。

第三步:然后小程序开始会对图片分区进行扫描,只要几分钟就好了,耐心等候它充分扫描手机数据。

第四步:扫描完成之后,在界面上就显示有扫描的结果,对扫描到图片会都有显示,选中你想要恢复图片就可以直接恢复了。

《文件和文件夹的操作》教学设计 篇11

IPTV (Internet Protocol Television) 即交互式网络电视, 是一种集互联网、多媒体、通讯等多种技术于一体, 利用宽带资源为主要传输网络提供多媒体信息服务的新业务。流媒体编解码技术是IPTV关键技术之一, 从目前的编解码技术来看, 被市场最为广泛采用的是MPEG-2系列标准[1,2]。MPEG-2系统可以将一个或更多的音频、视频、以及其他的基本流合成单个或多个数据流, 以便于存储和传输。同时, IPTV需要为用户提供实时的网络传输服务, 实时传输协议 (Real-Time Transport Protocol, RTP) 应运而生, RTP采用UDP (User Datagram Protocol) 来传输实时数据, 包括视频、音频等。音视频数据在发送之前, 会先被封装在RTP信息包中, RTP信息包再被封装到UDP的负载中, 最后在封装在IP数据包中[3,4]。本文研究和实现的重点内容之一就是如何从这些承载了MPEG-2 TS视频流的IP数据包中提取出TS流, 从而还原出能够直接用MPEG视频播放器 (包括IPTV机顶盒) 播放的清晰TS格式的视频文件, 然后从TS文件中提取出基本MPEG2序列流, 提取得到的视频序列流可以用作转码、关键帧的提取等与MPEG2相关的视频编辑和处理等。

在媒体节目播放过程中, 用户有时候只是希望了解所点播节目的大致内容, 这就要求视频服务器能够提供快进、快退的功能, 以实现节目预览。MPEG-2采用帧间编码技术, 定义了I帧 (Intra Picture) 、P帧 (Predicted Picture) 和B帧 (Bidirectional Picture) 三种图像格式, 其中的I帧是P、B帧的参考帧, 一般采用I帧就足以提供视频内容的全部信息, 提取I帧就能够用它来表示视频节目的主题和部分内容而不是动态的细节。此外, 视频播放时, 如果最开始就能定位到MPEG-2视频中第一个I帧所在的位置, 还能有效避免起初播放时不完整画面或黑屏的出现, 所以I帧在视频图像内容提取中占据比较重要的作用, I帧的提取也是本文重点研究的内容之一。

2 MPEG-2 TS流简介以及MPEG-2图像组

2.1 MPEG-2标准简介

MPEG-2标准是MPEG和ISO组织设计的一个数字视频压缩规范, 主要用于DVD和DVB上。其设计目标是高级工业标准的图象质量以及更高的传输率。

MPEG-2 System是MPEG-2标准的一部分, 该部分描述了多个视频, 音频和数据多种基本流 (Elementary Streams, ES) 合成传输流 (Transport Stream, TS) 和节目流 (Program Stream, PS) 的方式[5,6]。就通俗的理解, MPEG-2 System的主要功能是提供了将多种基本码流规范变成一种单一的便于传输的码流的技术标准。MPEG-2 System主要的任务有:1) 规定以包方式传输数据的协议 (最终形成的TS流或者PS流是由TS包或PS包组成的) ;2) 为收发两端数据流同步创造条件 (PCR、PTS、DTS) ;3) 确定将多个数据流合并和分离 (即复用和解复用) 的原则;4) 提供一种进行加密数据传输的可能性。如图1是系统将多个基本流规范成单一数据流的一个复用和解复用过程。

2.2 TS流简介

MPEG-2系统中, 节目流 (TS) 的形成主要有三个过程1) 数字化的视频、音频及辅助数据经过数据压缩后形成各自的基本流 (ES) [7]。2) 在视频ES和音频ES流中加入一些同步信息, 打包成可变长度的数据包PES, 原来是流的形式, 打包后成了数据包的分割形式, 分别称为视频PES和音频PES。3) 将视频和音频的PES流以及辅助数据按照不同的格式再打包, 然后进行复用, 最后就可以生成TS流, 其过程如图2所示。

TS流可以被理解为一种单一码流、混合码流。单一性主要是指TS流的基本组成单位是长度为188字节的TS包。而混合性是指TS流由多种数据组合而成, 一个TS包中的数据可以是视频数据, 音频数据, 填充数据, PSI/SI表格数据 (唯一的PID对应) 等。TS流的固定188个字节中, 包括固定的4字节和可选的可变长的调整字段。TS的包头主要包含包同步, 包标识 (PID) 域等, PID主要用来标识包的类型 (如视频、音频、节目指定信息PSI等) 。可变长的调整字段里有一个非常重要的PCR (Program Clock Reference) 域, 解码端通过该时间参数进行解码端的时钟重建, 他对收端的唇音同步、信号重建等很重要, TS包结构如图3所示。如果能够得到TS流文件, 就能从中提取基本的视频序列流 (ES) 文件。

3 IP数据包中TS文件的提取

3.1 网络数据包的抓取

从网络数据包中提取到TS流, 首先需要抓取到数据包。Wire Shark是非常流行的网络封包分析软件, 功能十分强大。可以截取各种网络封包, 显示网络包的详细信息。本文的数据包即用该工具抓取 (抓取的数据包存为pcap格式的文件) , 用于作为TS格式文件的提取。

抓取到的数据包主要是由RTP承载的TS数据包, 还有其他的诸如ARP、UDP承载的数据包等等。这些冗余信息需要被过滤除去。Wire Shark本身提供了几种过滤表达式的规则, 如表1所示。本文所需要的是RTP承载的TS数据包, 采用RTP协议过滤, 然后保存成pcap文件即可。

3.2 MPEG-2 TS在RTP协议中的封装

在获取到IP承载的MPEG-2 TS视频文件之后, 需要从抓取的pcap文件中进行提取, 而提取的前提是需要知道MPEG-2 TS包在网络传输中的封装结构。在因特网上的网络层之上采用两种协议:传输控制协议 (Transport Control Protocol, TCP) 和用户数据报协议UDP。TCP是面向连接的可靠的传输协议, UDP是无连接的不可靠的传输协议。与TCP相比较, 虽然UDP不提供可靠传输, 但它面向无连接, 延时短, 包头下, 额外开销比较小, 更适合实时流媒体传输, 所以一般MPEG-2 TS文件采用UDP进行传输。

RTP协议位于UDP之上, 是一种应用型的传输层协议, 它本身不提供任何传输可靠性的保证或拥塞控制机制。RTP通常总是与第一层的UDP结合使用, 不仅可以利用UDP的端口号和校验和, 还可以利用其传输延时短的优点传输实时数据。如图4是RTP在TCP/IP网络模型中的位置, 它可以看成是传输层中较高的子层。

MPEG-2 TS包的长度是固定的188个字节, 出于对系统效率的考虑, 在RFC2038和RFC2250中有规定, 多个TS数据包可以整合成一个RTP负载, 且一个RTP包的有效负载必须包含整数个MPEG-2 TS包。多数数据链路层协议将最大数据包长度限制为1500字节, 所以实际传输过程中, 一般是将7个MPEG-2 TS包整合在一个RTP包负载中, 再加上12字节RTP包头、8字节UDP包头以及最短20字节IP包头, 这样到达数据链路层的分组长度为:188×7+12+8+20=1356字节, 刚好小于1500字节[8]。本文中抓取的IP数据包即是采用将7个MPEG-2 TS包整合在一个RTP负载中。

3.3 TS视频文件的提取

本文抓取的数据包中, 每个RTP负载整合有7个MPEG-2 TS包, 整个RTP包在网络传输中的封装格式可参考图5, 要提取到RTP承载的TS数据包, 需要去掉各层协议的封装包头, 比如, IP头部字段、UDP头部字段, RTP头部字段, TS包头部等等。最终只需要保留TS包净荷, 提取TS包文件的流程图如图5所示。

在上面的流程图中, 采用了M F C (M i c r o s o f t Foundation Classes) 技术实现了界面化处理, 可以指定需要处理的文件 (磁盘中的完整路径名, 默认为PCAP格式的文件) 和输出文件 (磁盘存储中的完整路径名, 默认为TS格式文件) , 由于用Wire Shark抓取到的文件都带有固定的24字节的Wire Shark标签, 所以在处理前需要去掉这24个字节 (程序中即为p Msg Buf+24) 。以太网头部、IP头部, UDP头部, RTP头部等共有62字节, 另外加上7个TS包前16字节的标志字段, 这样, 要去掉这些无用的头部信息, p Msg Buf需要顺移102字节。接着再判断这些字段之后是不是有效的TS包 (TS包标志位0x47) , 如果是, 则将7个TS包写入TS文件中, 依次循环执行, 只到将全部的TS包写入到TS文件中。这样就得到了所需要的TS文件。

提取TS包完成后用视频播放器打开该TS文件的播放效果如图7所示, 直接抓取的网络数据包 (PCAP文件) 的播放效果如图6所示。由图可以看出, 画面质量已经完全还原成IPTV播放器的播放效果, 这个文件将用作MPEG-2基本视频序列和I帧的提取。

4 提取I帧的实现

4.1 视频序列流的提取

在提取I帧的过程中, 传统以前的做法只是单纯提取I帧流 (包含序列头等信息, 但是去掉了除I帧以外的P帧和B帧) , 而没有提取视频序列流。本文设计能够从输入的MPEG2传送流 (TS) 中提取出MPEG2序列流。提取视频流的流程如图8所示。

首先, 从PAT获取TS流中所有节目映射表。然后, 从节目映射表中获取每个节目 (本设计为本地文件, 只含有一个PMT) 数据 (视频和音频) 的PID。最后, 根据传输过来的数据PID对视频数据和音频数据进行系统层复用解码 (不涉及到编码的解码) 。系统层复用解码循环:TS―>PES―>ES。

4.2 I帧的提取

在M P E G压缩方法中, 把几帧图像分为一组 (GOP) , 每组内各帧图像定义为3种类型, 即I帧、P帧和B帧。这3种帧的组织是非常灵活的, 由编码器根据实际情况来选择其安排。一般, 它们会被安排成一组特定的周期性序列, 如“IBBPBBP”。其中I帧是用来帮助对视频序列的随机访问, 需要用到随机访问的各种应用, 快进和快退使用I帧可能会更加频繁, I帧也用来作为P帧和B帧的参考帧, 是图像组里相对来说最重要的。在编码比特流中, 图像组头后面的第一个编码帧是I帧。

TS流拆包得到视频原始流 (PES) 后, PES流再拆去包头, 去掉填充字节等最后得到视频序列流。本文I帧的是从视频序列流中提取得到。提取I帧的流程如图9所示。

流程图中, 提取TS的总速率Ts_Rate主要是为以后重新添加P C R做准备, 而重新添加Dts、Pts则需要获取帧速率Frame_Rate。I帧在视频流中出现有非常明显的标志, 它出现在0x000001B8之后, 因此可以定位到I帧的位置, I帧结束后是下一帧 (P帧或B帧) 或序列头的开始:0x00000100标志着比特流中将会出现一个视频帧;而0x000001B3标志着比特流中将会出现一个序列头。通过这些信息就可以定位到一个完整I帧的大小和位置, 从而提取到I帧。提取到I帧后, 本文还设计对ES流重新进行了打包成PES以及TS文件。

5 总结

论文通过对MPEG-2编码系统的介绍和I帧在实际应用中重要性的分析, 设计和实现了从网络上抓取MPEG-2视频文件以及从抓取到的PCAP文件中提取出TS文件, 最后从这些TS文件中提取出了视频序列流文件和I帧的方法。这对MPEG-2视频在IP网络中传输方式的研究有一些借鉴意义, 从用户的感受角度来讲, 可以对研究视频提供快进、快退功能以及画面选择等有一些参考, 对三网融合的未来也有良好的推广作用。未来的工作方向之一就是建立源TS流与I帧组成的TS流之间的映射关系, 可以通过建立索引表来实现。从而能够真正为用户提供快进、快退功能等。

参考文献

[1] 曾爱华, 刘捷, 冼进.IPTV系统架构及主要技术[J].通信技术, 2010 (03) :171-172

[2] 宫昕昱, 雒江涛, 任波.基于FPGA数据交换的IPTV检测仪系统设计[J].电视技术, 2011 (07) , 95

[3] 张友兵, 黄桂金.IPTV系统中媒体数据接收控制的一种实现[J].中国有线电视, 2006 (03/04) :300-301

[4] 彭进, 雒江涛, 康丽娟.IP多媒体子系统中呈现业务的研究及实现[J].电视技术, 2010 (01) :59-60

[5] ISO/IEC 13818 Coding of Moving Pictures and Associated Audio.ISO/IEC JTC1/SC, 1993

[6] MPEG2.Generic coding of moving pictures and associated audio:system, ISO/IEC, November 1994

[7] 黄成辉, 邓裕昭.MPEG-2中TS码流包结构和功能应用[J].中国有限电视, 2008 (03) :246-248

上一篇:学前儿童艺术教育(美术)作业答案(Y)下一篇:小学一年级班主任老师教学工作总结