由文件引发的一些思考
2012-04-24 22:51
106 查看
[size=small][/size][size=x-large][size=xx-small] 由文件引发的一些思考
从很小的时候就开始玩电脑,操作着各种各样的文件,音频、语音、读写、绘画、写字等各式各样的文件都有其不同的功能。但都不知道它们的操作运行原理的本质是什么。
今天一节课,东哥由和是文件开始从文件的本质深入浅出的给我们讲解了我们平时操作的一些应用软件的本质,实现了文件的保存和加密。
对于硬盘机或任何电脑存储来说,有效的信息只有两种,即0和1,而不同的文件即是因为字节的排列次序不同,这一层面便是所谓的操作系统。到了应用系统,即这些不同次序的字节为什么展现在人们面前的是不同的形式?有的是文字有的是音频?就是因为不同的应用程序对于字节的解释规则不同则打开的格式不同,呈现在人们面前的形式便不同。
电脑设计有相应的方式进行信息-位元的转换,对于不同的信息有不同的储存格式。有的存储图片,有的存储程序,有的存储文字信息。每一类信息都可以一种或多种文件格式保存在电脑存储中,每一种文件通常会有一种或多种扩展名进行识别(文件的扩展名只是对不同文件的标识,与文件的本身的存储格式没有关系,文件的存储格式的不同是由于文件内部字节的排列次序不同。),但也可能没有扩展名。
不同的文件格式就是将文件的信息用不同的顺序和表达写到存储器中。
文件的存储就是将一个指定路径的文件(要保存的文件)的数据读出再写入到另一个指定路径(想要保存到的地方)的文件(保存的文件)中。//读入一个就输出一个,这样就不用数组保存,就解决了内存太大溢出数组的问题
//读取一个字节
int t=input.read();
while(t!=-1){
//写入一个字节
output.write(t);
//读取下一个字节
t=input.read();
}
将原来的文件删去;
//将原文件删去
File file=new File(src);
file.delete();
文件的加密就是在原有保存文件的基础上改变写入时的次序: //读取一个字节
int t=input.read();
while(t!=-1){
//写入一个字节
output.write(t+23);
//读取下一个字节
t=input.read();
}
在解密时只需将写入的次序还原就可以了:
//读取一个字节
int t=input.read();
while(t!=-1){
//写入字节
output.write(t-23);
//读取下一个字节
t=input.read();
}
若是一个大文件则一个一个读取字节再写入显然会很慢,则可以借用缓存块,每次传送缓存区大小的数据,明显提高程序效率,但它也有一个缺点就是文件太大从缓存快溢出,方法如下:
//获取字节数
int len=input.available();
//创建一个数组进行保存,data相当于一个缓冲块,将字节先存储在此缓冲缓冲块中,这样一块一块的传输就快一些
byte[] data=new byte[len];
//读取
input.read(data);
//写入
output.write(data);
对于文件这一块我收获颇多,感觉第一次这么透彻的理解了每一句代码的含义用途,所以以后勤加练习还是最重要的。[/size][/size] 阅读更多
从很小的时候就开始玩电脑,操作着各种各样的文件,音频、语音、读写、绘画、写字等各式各样的文件都有其不同的功能。但都不知道它们的操作运行原理的本质是什么。
今天一节课,东哥由和是文件开始从文件的本质深入浅出的给我们讲解了我们平时操作的一些应用软件的本质,实现了文件的保存和加密。
对于硬盘机或任何电脑存储来说,有效的信息只有两种,即0和1,而不同的文件即是因为字节的排列次序不同,这一层面便是所谓的操作系统。到了应用系统,即这些不同次序的字节为什么展现在人们面前的是不同的形式?有的是文字有的是音频?就是因为不同的应用程序对于字节的解释规则不同则打开的格式不同,呈现在人们面前的形式便不同。
电脑设计有相应的方式进行信息-位元的转换,对于不同的信息有不同的储存格式。有的存储图片,有的存储程序,有的存储文字信息。每一类信息都可以一种或多种文件格式保存在电脑存储中,每一种文件通常会有一种或多种扩展名进行识别(文件的扩展名只是对不同文件的标识,与文件的本身的存储格式没有关系,文件的存储格式的不同是由于文件内部字节的排列次序不同。),但也可能没有扩展名。
不同的文件格式就是将文件的信息用不同的顺序和表达写到存储器中。
文件的存储就是将一个指定路径的文件(要保存的文件)的数据读出再写入到另一个指定路径(想要保存到的地方)的文件(保存的文件)中。//读入一个就输出一个,这样就不用数组保存,就解决了内存太大溢出数组的问题
//读取一个字节
int t=input.read();
while(t!=-1){
//写入一个字节
output.write(t);
//读取下一个字节
t=input.read();
}
将原来的文件删去;
//将原文件删去
File file=new File(src);
file.delete();
文件的加密就是在原有保存文件的基础上改变写入时的次序: //读取一个字节
int t=input.read();
while(t!=-1){
//写入一个字节
output.write(t+23);
//读取下一个字节
t=input.read();
}
在解密时只需将写入的次序还原就可以了:
//读取一个字节
int t=input.read();
while(t!=-1){
//写入字节
output.write(t-23);
//读取下一个字节
t=input.read();
}
若是一个大文件则一个一个读取字节再写入显然会很慢,则可以借用缓存块,每次传送缓存区大小的数据,明显提高程序效率,但它也有一个缺点就是文件太大从缓存快溢出,方法如下:
//获取字节数
int len=input.available();
//创建一个数组进行保存,data相当于一个缓冲块,将字节先存储在此缓冲缓冲块中,这样一块一块的传输就快一些
byte[] data=new byte[len];
//读取
input.read(data);
//写入
output.write(data);
对于文件这一块我收获颇多,感觉第一次这么透彻的理解了每一句代码的含义用途,所以以后勤加练习还是最重要的。[/size][/size] 阅读更多
相关文章推荐
- PHP中如何保持SESSION以及由此引发的一些思考
- 如何在PHP中保持SESSION以及由此引发的一些思考
- 开车误闯红灯的补救方法 (以及由此引发的一些思考)
- 由内部类引发的Android内存泄漏的一些思考
- Sql Server之旅——终点站 nolock引发的三级事件的一些思考
- 由使用多态引发的一些思考
- 项目开发而引发了一些思考
- 转:PHP中如何保持SESSION以及由此引发的一些思考
- Unix/Linx 文件I/O的一些小思考
- 【Android】导入第三方库时,关于so文件的一些思考
- 有遍历目录所有文件中关键字命令行脚本引发的思考
- eclipse新建.dic文件注意——由使用IKAnalyzer分词器新建ext.dic文件引发的思考
- 关于性开放引发的一些思考
- Sql Server之旅——终点站 nolock引发的三级事件的一些思考
- 我们应该讨论什么? 就面向对象的讨论所引发的一些思考
- 由url 引发的一些思考
- 由QTP引发的一些思考
- PHP保持SESSION问题以及由SESSION性能引发的一些思考
- 为什么cp很多小文件非常慢——对cp和rm命令的一些思考
- 由“使用存储过程”引发的一些思考(高手请进)