在android系统中,外部文件有两种存储方式:内置于asset和raw文件夹内。然而系统只提供了InputStream的读接口。java中常用的RandomFileAccess和FileReader等不能不能直接实现InputStream接口。经过查阅网上提供了以下两种折中的方法用来实现以上接口:
方法一:
InputStream转FileReader(http://stackoverflow.com/questions/2860157/load-files-bigger-than-1m-from-assets-folder
)
代码如下:
File f = File.createTempFile("mytempfile", "dat");
FileOutputStream fos = new FileOutputStream(f);
InputStream is = mc.getAssets().open(path,3);
ObjectInputStream ois=new ObjectInputStream(is);
byte[] data = (byte[]) ois.readObject();
fos.write(data);
fos.flush();
fos.close();
InputStream转RandomAccessFile(http://www.coderanch.com/t/277378/Streams/java/InputStream-RandomAccessFile-best-way
)
代码如下:
RandomAccessFile raf = new RandomAccessFile(File.createTempFile("isc", "tmp"), "rwd");
byte[] buffer = new byte[2048];
int tmp = 0;
while ((tmp = is.read(buffer)) != -1)
{
raf.write(buffer, 0, tmp);
}
raf.seek(0);
以上两种方法通过建立tmpFile从而实现基于File的文件读写类,该方法的缺陷也显而易见占用内存,每个文件都要被读写多次导致程序效率低下。虽然在android下文件不能超过1M,但是针对现有手机的硬件,多次存取会导致不论从耗电量还是程序的速度都会有明显的影响。
This file can not be opened as a file descriptor; it is probably compressed
见引用http://code.google.com/p/android/issues/detail?id=3122
分享到:
相关推荐
《新华字典》是中国最为权威的汉语字典之一,它为学习者提供了丰富的语言资源。在您提供的压缩包中,包含的五个文件分别是`ci....同时,这也为开发汉语学习应用、智能推荐系统或自然语言处理技术提供了基础数据支持。
在开发过程中,`tbl_common_dictionary.sql`文件很可能是用来初始化数据库的SQL脚本,包含了创建表的DDL语句以及初始数据的DML语句。通过执行这个脚本,可以快速地在MySQL环境中建立这个词典表并填充数据。 总结来...
- 使用文件操作函数如`fopen`、`fwrite`、`fread`等实现词典的读写。 - 文件格式建议采用文本格式存储,便于数据管理和后期扩展。 - **数据处理**: - 实现线性查找算法,用于查找和修改词汇。 - 注意字符串的...
《Java汉英、英汉词典》是一款专为Java编程语言设计的专业词汇工具,它集成了汉语与英语在编程领域的专业术语,旨在帮助开发者更好地理解和翻译编程相关的文档、代码及交流内容。这款词典不仅涵盖了Java语言的基础...
Java的java.io和java.nio包提供了丰富的API用于读写文件和处理压缩文件,开发者可能使用了第三方库如Apache Commons Compress来处理rar格式。 6. **文档编写**:“英汉词典使用手册.docx”文件说明了软件的使用方法...
这涉及到数据库操作,可能是简单的文本文件读写,或者是更复杂的数据结构如链表、树等,用于存储和管理词汇数据。用户交互设计需要确保这个过程简单直观,避免复杂的操作流程。 此外,"清除按钮"功能设计用于清理...
【标题】"纯Python打造的英汉词典"揭示了一个基于Python编程语言开发的实用工具,主要用于英语学习者和翻译工作者。这个项目的核心是利用Python的高效性和灵活性,构建一个功能齐全、易于使用的英汉词汇查询系统。 ...
- 如果应用涉及读写外部存储,可能需要在Android 6.0及以上版本请求运行时权限,这是Android权限管理的一个重要特性。 6. **版本适配** - 考虑到Android系统的碎片化,开发者可能需要确保应用能在不同版本的...
这个压缩包文件“一个简单...5. **文件操作**:了解如何在程序中进行文件读写操作。 这个简单的英汉词典项目为初学者提供了一个很好的学习平台,它综合运用了多种编程和数据处理技能,对于提升实际开发能力大有裨益。
标题中的“json格式数据 开发利器 小凯制作”暗示了这个压缩包文件包含的是一个使用JSON格式编写的词典资源。JSON格式的数据通常以键值对的形式存在,类似于JavaScript的对象结构,即由大括号{}包围的一系列键值对,...
在英语到汉语的翻译应用中,TouchXML可能被用来解析网络上的XML格式的词典资源,或者用于处理与服务器交互的数据交换格式。 这个项目的文件名“Dictionary-陈奕龙 余海松”表明了开发团队成员的名字,这通常是项目...
《C#英汉字典》是一款基于C#编程语言开发的应用程序,主要功能是提供英文单词的汉语释义查询服务。这款软件充分利用了C#的强大功能和面向对象的特性,为用户提供了便捷、高效的词汇查询体验。 在C#编程中,实现这样...
9. **权限管理**:如果应用需要读写外部数据库,可能需要在AndroidManifest.xml文件中声明相应的权限,例如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE。 10. **测试与调试**:在开发过程中,开发者会使用...
在KTestpinyin这个文件中,很可能是汉字转拼音软件的一个测试版本或开发资源。可能包含了软件的源代码、测试数据、用户手册等相关资料,供开发者或研究者进行研究和改进。 总之,汉字转拼音软件是中文信息化处理中...