如何执行TEmbeddedWB下的Getqqexternal.exe

/&获取根目录& & getDataDirectory()---->/data 获取data目录& & getExternalStorageDirectory()--->/sdcard 获取sd卡目录& & getDownloadCacheDirectory()--->/cache 获取下载文件的缓存目录& & getExternalStorageState--->sdcard的状态,removed,unmounted,checking,nofs,mounted,mounted_ro,shared,unmountable,bad_removal& & 完整的savePasswordService.java文件为:& & package com.amos.& & import java.io.F& & import java.io.FileOutputS& & import android.annotation.SuppressL& & import android.content.C& & import android.os.E& & import android.util.L& & import android.widget.T& & @SuppressLint("WorldWriteableFiles")& & public class savePasswordService {& & private C& & private String tag = "savePasswordService";& & public savePasswordService(Context context) {& & this.context =& & }& & public void savePasswordToFile(String name, String password) {& & // 这里设置文件的权限& & String content = name + ":" +& & Log.d(tag, "设置文件的读写权限");& & try {& & FileOutputStream fileOutput = context.openFileOutput("LoginTestConfig.txt", Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);& & fileOutput.write(content.getBytes());& & fileOutput.flush();& & fileOutput.close();& & } catch (Exception e) {& & Log.d(tag, "设置文件的读写权限失败!");& & e.printStackTrace();& & }& & }& & //写数据到sdcard& & public void savePasswordToSDCard(String name, String password) {& & // android 2.1 /sdcard/xx.txt& & // android 2.2 /mnt/sdcard/xx.txt& & // self_define /excard/xx.txt& & //&&&&File externalStorageDirectory = Environment.getExternalStorageDirectory();& & //&&&&String path = externalStorageDirectory.getPath();& & //&&&&System.out.println("path:" + path);& & // 要存储的内容& & String content = name + ":" +& & Log.d(tag, "检验sdcard是否可用?");& & //判断sdcard是否存在?& & if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){& & Log.d(tag, "sdcard不可用!");& & Toast.makeText(context, "没有找到SDCard!", Toast.LENGTH_LONG);& && & };& & try {& & // File file = new File("/sdcard/qqpassword.txt");& & // File file = new File(path + "/qqpassword2.txt");& & File file = new File(Environment.getExternalStorageDirectory(), "/qqpassword2.txt");& & FileOutputStream fos = new FileOutputStream(file);& & fos.write(content.getBytes());& & fos.flush();& & fos.close();& & } catch (Exception e) {& & e.printStackTrace();& & }& & }& & }& & 复制代码& & 如何获取sdcard的大小?& & StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getPath());& & long blockSize = statFs.getBlockSize();& & long blockCount = statFs.getBlockCount();& & long sdCardSize = blockSize*blockC& & Log.d(tag,""+sdCardSize );& & 这里使用的是Environment中的方法获取到sdcard的路径,然后将其路径通过StatFs类,该类主要获取指定文件路径下的文件信息(filesystem info).& & 获取其块大小,块数量.
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益当前位置:
IE 控件一些高级使用方法
IE 控件一些高级使用方法
发布日期: 10:05
浏览次数:12145次
标  签:COM
文章评分:5.0
操  作:
称号:未设置简介:...
文章概要:
本文介绍如下内容:
1、如何显示内存中的 HTML 网页;
2、如何屏蔽掉鼠标右键的上下文菜单;
3、如何扩展 HTML 中的脚本(external)对象;
4、如何显示 HTML 样式的对话窗;
5、如何执行 HTML 脚本;
本文介绍如下内容
1、如何显示内存中的 HTML 网页;
2、如何屏蔽掉鼠标右键的上下文菜单;
3、如何扩展 HTML 中的脚本(external)对象;
4、如何显示 HTML 样式的对话窗;
5、如何执行 HTML 脚本;
一、如何显示内存中的 HTML 网页
或者因为网页保密的考虑;或者因为软件分发的考虑,有的时候就需要让 IE 或 IE 浏览器控件显示内存或资源中的 HTML 网页。在 MFC CHtmlView::LoadFromResource() 可以显示程序资源中的 HTML 内容。我们都知道MFC的 CHtmlView 其实是对 IWebBrowser2 的一个包装,但是在 IWebBrowser2 中却没有类似的方法。那么它是如何实现的那?步骤如下:
1、首先通过 IWebBrowser2::Navigate2() 显示一个网页,其目的是产生有效的对象,从而得到 IHTMLDocument2 接口;
2、IWebBrowser2::get_Document() 得到 IHTMLDocument2 接口指针;
3、IHTMLDocument2::QueryInterface() 得到 IPersistStreamInit 接口指针;
4、IPersistStreamInit::InitNew() 初始化接口对象;
5、IPersistStreamInit::Load() 装载内存中的 HTML 数据流(IStream *);
  && 内存指针转换为流的方法是:
  && I、 & GlobalAlloc() 申请内存;
  && II、& 复制 HTML 字符串内容到上述的内存中;
  && III、 CreateStreamFromHGlobal() 转换内存为 IStream 指针;
原理性代码如下:
// 显示一个空白网页
m_ie.Navigate2( &CComVariant(_T("about:blank")),NULL,NULL,NULL,NULL);
// 得到 IHTMLDocument2 指针
CComPtr& IDispatch & spDoc(m_ie.GetDocument());
// 得到 IPersistStreamInit 指针
CComQIPtr& IPersistStreamInit, &IID_IPersistStreamInit & spPSI( spDoc );
// 申请内存,复制 HTML 字符串
LPTSTR lpMem = (LPTSTR)::GlobalAlloc( GPTR, ::lstrlen( lpHtml )+1 );
lstrcpy( lpMem, "
xxx xxx" );
// 转换内存为流对象指针
CComPtr& IStream & spS
CreateStreamOnHGlobal( lpMem, TRUE, &spStream );
// 初始化后,装载显示
spPSI-&InitNew();
spPSI-&Load( spStream );
图一、IE控件显示内存中的 HTML 文件
图二、HTML对话窗
IE 所能支持的数据传输协议,除了大家所熟悉的 http、ftp、file......还有一个协议是 res ,它表示浏览显示文件中的 HTML 资源。你可以在 IE 的地址栏上直接输入这样格式的 URL:"res://文件名/资源名"。
把 HTML 文件加入到程序资源的方法比较简单,在资源卡片中,鼠标右键弹出菜单,执行 Import...(引入),选择指定的 HTML 文件,然后给一个资源名称即可。(在这里,最方便的资源名称用字符串比较好,如果使用整数ID,那么将来在使用的时候是这样的格式:res://文件名/#101,这里假设 101 是资源的ID号。真麻烦!我不太喜欢这样的方式。)对于图片文件等其它的附件,则需要手工编辑资源 RC 文件(用 IDE 环境引入,它会试图用文本方式打开一个2进制文件,多数情况下会“死机”)。下图是事例程序引入资源后的样式:
图三、HTML 资源的引入
手工编辑 RC 文件的部分是:
//////////////////////////////////////////////////////////////////
HTML_TOWORD       HTML  DISCARDABLE   "res\\ToWord.htm" // 这两个是HTML文件,可以引入
HTML_DLG        HTML  DISCARDABLE   "res\\html_dlg.htm"
~SEND_R1_C1.GIF     HTML  DISCARDABLE   "res\\~Send_r1_c1.gif" // 下面的是GIF文件,需要手工加入
~SEND_R1_C2.GIF     HTML  DISCARDABLE   "res\\~Send_r1_c2.gif"
LOGO.GIF        HTML  DISCARDABLE   "res\\Logo.gif"
SEND_R1_C1.GIF    
HTML  DISCARDABLE   "res\\Send_r1_c1.gif"
SEND_R1_C2.GIF    
HTML  DISCARDABLE   "res\\Send_r1_c2.gif"
SPACER.GIF      
HTML  DISCARDABLE   "res\\spacer.gif"
#endif  // Chinese (P.R.C.) resources
///////////////////////////////////////////////////////////////////
二、屏蔽 IE 控件的上下文菜单
屏蔽或自定义 IE 控件的上下文菜单,其实就是需要实现 IDocHostUIHandler 接口中的 ShowContextMenu 方法。如果使用 ATL 编写程序,我认为实现是比较简单的(也许是我使用 ATL 写 COM 比 MFC 熟悉一些的因素吧)。事例程序由于用 MFC 书写,真是搞的我头晕眼花,翻箱倒柜终于找到了微软书写的演示代码,于是我就直接复制过来使用了。(换句话说,读者在阅读这部分代码的时候,如果有问题可不要问我。你直接打电话去咨询 Microsoft 哈。)
三、扩展 HTML 脚本中的 external 对象
从 CCmdTarget 派生一个自动化对象(新建C++类的时候,注意别忘了选择 Automation)。在这个类里,你可以使用 ClassWizard 的 Automation 卡片,添加自定义的方法和属性。而在 HTML 的脚本程序中,就可以使用 window.external 进行调用了。用这个方法,实现了对 HTML 脚本功能的扩充。在 HTML 脚本和自动化对象之间要建立起关系,则需要实现 IDocHostUIHandler::GetExternal() 方法。
四、显示 HTML 样式的对话窗
这节内容是本文的重点。
用户的界面设计经历了若干个发展阶段。最早的程序设计,可以说没有用户界面;然后发展出一些简单的与用户交互的界面(控制台界面,全屏文本界面);再然后发展出了图形界面。其实我们现在的商业程序设计中,界面的处理代码占用了很大的篇幅。为了使界面的处理变得简单、通用、易修改维护,人们制作了很多的界面程序库。说实在话,大多数的界面程序库由于封装的不好,一是不灵活,二是经常需要修改它内部的 BUG,重用的效果并不理想。通用的换肤软件也只能实现对标准的窗口类进行皮肤美化,对自定义的窗口类还是需要自己写钩子。咳......
现在,我们已经有一个非常好的方法进行界面设计了,那就是使用 HTML(使用 Visual Studio.net 的程序员,一定对 .net 的界面很喜欢吧?!.net 开发环境,无处不在使用 HTML 方式的界面)。即使是一个完全地道的本地软件(非B/S软件),也可以使用本地 ASP 方式,HTA 方式进行程序设计。软件用户非常喜欢这样的程序,因为他早就熟悉并掌握了浏览器的操作,另外,对于程序员来说,也非常喜欢这种方式,因为不会再为换肤,不同用户不同的界面特化而伤脑筋了。
微软将要在下一代的程序设计中使用 XML 来描述用户界面。这种设计方式将会解放你、我这样的程序员,把咱们的工作量全部都转化到美工师那里去了:) 借 vckbase 的平台,现在呼吁大家,尽快学习和掌握 HTML、XML 的设计和脚本编程,并能熟练地对它们与 C++ 对象的交互进行编程。可以预计在未来的两三年内,拥有这样水平的程序员,一定会开始吃香饽饽了,嘿嘿......
下面,就如何显示一个 HTML 对话窗,开始我们未来软件方式的编程吧。
我们要调用 MSHTML.DLL 中的一个函数 ShowHTMLDialog(Ex) 来完成 HTML 对话窗的显示和数据交互。这个函数的声明是:
HRESULT&ShowHTMLDialogEx(  &&
  HWND&hwndParent,
  IMoniker&*pMk,
  DWORD&dwDialogFlags,
  VARIANT&*pvarArgIn,
  WCHAR&*pchOptions,
  VARIANT&*pvarArgOut );
hwndParent
对话窗的父窗口句柄
这个太简单了,不多罗嗦。
URL的命名接口指针
表示在对话窗中显示哪个URL的页面。但它不是以简单的URL字符串方式提供的。它使用了moniker(命名)接口指针。 根据URL得到IMoniker *很简单,调用CreateURLMoniker()。唯一要注意的是,这个函数需要连接 Urlmon.lib 库。
dwDialogFlags
对话窗类型
可以组合 HTMLDLG_NOUI、HTMLDLG_MODAL、HTMLDLG_MODELESS、HTMLDLG_PRINT_TEMPLATE、HTMLDLG_VERIFY。
示例程序使用的是模式对话窗。HTMLDLG_NOUI 在下一节中介绍。
对话窗的输入参数
一个传入对话窗的VARIANT变量,对话窗脚本中使用 window.dialogArguments 可以取得。
pchOptions
对话窗样式
用字符串表示的对话窗样式。参考 IHTMLWindow2::showModalDialog()函数。
比如:"dialogHeight:100px dialogWidth:200px"表示200点宽,100点高。如果你不想在程序中指定,也可以在HTML中描述。
pvarArgOut
对话窗输出参数
对话窗的VARIANT返回值,对话窗脚本中使用 window.returnValue 可以赋值。
这个函数在 vc.net 的头文件上有完整的声明,如果你使用 vc 6.0 的话,那么函数声明、函数指针定义和一些常量,你需要手工添加。还好,本文的示例程序是在 VC6 下编写和调试的,下载代码后,请仔细阅读源文件和注释就可以了。
五、执行 HTML 脚本
关于调用脚本的方法,我在 vckbase 发表了好几篇文章(鬼知道我为什么对脚本这么有兴趣)。ShowHTMLDialogEx()函数中,如果类型参数给出 HTMLDLG_NOUI,则表示并不真正显示一个对话窗,而是加载指定的 HTML 并执行其中的脚本。示例程序的该脚本中,执行一连串的动作,完成了把上一个 HTML 对话窗中用户输入的文本,发送到 MS WORD 中去。以此上下串联起来,演示了本文章中所讨论的所有功能。下面我把脚本和注释给朋友们展现一下:
On Error Resume Next
Set wordapp=CreateObject("Word.Application") ''''运行 MS WORD
if err&&0 then
MsgBox("没有安装 MS WORD")
wordapp.visible = true
''''显示WORD界面
wordapp.Documents.Add "",false, 0 ''''新增一个空文档
wordapp.Selection.TypeText window.dialogArguments ''''键入传递进来的文本
window.close
六、结束语
好好学习、天天向上。做合格的社会主义计算机软件事业接班人。嘿嘿......
最多还可以输入100字
【VIP年会员制套餐】
【C/C++软件工程师实战能力集训大纲】
VC知识库发布了C/C++业界的“本草纲目”
【牛人都在千人一号群! 加群三步走!!!】
第一步:请必须加VC知识库QQ: 为好友;
第二步:请必须关注本站微博:
第三步:申请加入群:.(必须将关注微博截屏发到QQ方可通过!)
【最新2013:】
全部100% VC++源码提供: E-Form++全新大型SCADA & HMI解决方案源码、CAD解决方案源码、Gis解决方案源码 、电力石油化工仿真与图形建模解决方案源码、大量其他高级制图VC++源码下载!
【 新视频发布】
o o o o o o o o o o
Foxmail 新版中有一个《邮件特快专递》的功能。起先搞不懂如何用,后来知道要在“工具->系统选项”那边设置“本地 DNS 服务器的IP地址”。
  觉得这个新功能蛮好用的。不需要通过SMTP代理,可以直接通过本地往邮箱所在的邮件交换器发送邮件。在暑假一开始想在 VC++ 中实现这个功能。用 IRIS 截包后,发现程序中有 mx8.263.net 发送邮箱,不知道这个是什么东西,所以作罢。后来才想到这个就是 263.net 的MX记录主机,原来特快专递的原理就是往这个主机上发送数据就行。...
Foxmail 新版中有一个《邮件特快专递》的功能。起先搞不懂如何用,后来知道要在“工具->系统选项”那边设置“本地 DNS 服务器的IP地址”。
  觉得这个新功能蛮好用的。不需要通过SMTP代理,可以直接通过本地往邮箱所在的邮件交换器发送邮件。在暑假一开始想在 VC++ 中实现这个功能。用 IRIS 截包后,发现程序中有 mx8.263.net 发送邮箱,不知道这个是什么东西,所以作罢。后来才想到这个就是 263.net 的MX记录主机,原来特快专递的原理就是往这个主机上发送数据就行。...
本文介绍了套接字编程的基本知识。...posts - 220,&
comments - 163,&
trackbacks - 0
本文主要介绍如何写数据到sd卡,这里主要到的技术是Environment中的方法.
2.实现代码:
&/datasave/src/com/amos/datasave/savePasswordService.java&
//写数据到sdcard
public void savePasswordToSDCard(String name, String password) {
// android 2.1 /sdcard/xx.txt
// android 2.2 /mnt/sdcard/xx.txt
// self_define /excard/xx.txt
File externalStorageDirectory = Environment.getExternalStorageDirectory();
String path = externalStorageDirectory.getPath();
System.out.println("path:" + path);
// 要存储的内容
String content = name + ":" +
Log.d(tag, "检验sdcard是否可用?");
//判断sdcard是否存在?
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Log.d(tag, "sdcard不可用!");
Toast.makeText(context, "没有找到SDCard!", Toast.LENGTH_LONG);
// File file = new File("/sdcard/qqpassword.txt");
// File file = new File(path + "/qqpassword2.txt");
File file = new File(Environment.getExternalStorageDirectory(), "/qqpassword2.txt");
FileOutputStream fos = new FileOutputStream(file);
fos.write(content.getBytes());
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
&在android2.1及以前版本中,其sdcard目录在根目录,2.2,2.3以后其sdcard目录就变成了/mnt/sdcard了,以及一些厂商自定义的android系统,可能也会把sdcard的名称改的各不相同.这里如果还是用绝对路径,那么程序的兼容性将会大大降低.这里主要用到了Enviroment类.
android.os.Environment
其主要方法有:
getRootDirectory()----&/ &获取根目录
getDataDirectory()----&/data 获取data目录
getExternalStorageDirectory()---&/sdcard 获取sd卡目录
getDownloadCacheDirectory()---&/cache 获取下载文件的缓存目录
getExternalStorageState---&sdcard的状态,removed,unmounted,checking,nofs,mounted,mounted_ro,shared,unmountable,bad_removal
完整的savePasswordService.java文件为:
package com.amos.
import java.io.F
import java.io.FileOutputS
import android.annotation.SuppressL
import android.content.C
import android.os.E
import android.util.L
import android.widget.T
@SuppressLint("WorldWriteableFiles")
public class savePasswordService {
private String tag = "savePasswordService";
public savePasswordService(Context context) {
this.context =
public void savePasswordToFile(String name, String password) {
// 这里设置文件的权限
String content = name + ":" +
Log.d(tag, "设置文件的读写权限");
FileOutputStream fileOutput = context.openFileOutput("LoginTestConfig.txt", Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
fileOutput.write(content.getBytes());
fileOutput.flush();
fileOutput.close();
} catch (Exception e) {
Log.d(tag, "设置文件的读写权限失败!");
e.printStackTrace();
//写数据到sdcard
public void savePasswordToSDCard(String name, String password) {
// android 2.1 /sdcard/xx.txt
// android 2.2 /mnt/sdcard/xx.txt
// self_define /excard/xx.txt
File externalStorageDirectory = Environment.getExternalStorageDirectory();
String path = externalStorageDirectory.getPath();
System.out.println("path:" + path);
// 要存储的内容
String content = name + ":" +
Log.d(tag, "检验sdcard是否可用?");
//判断sdcard是否存在?
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Log.d(tag, "sdcard不可用!");
Toast.makeText(context, "没有找到SDCard!", Toast.LENGTH_LONG);
// File file = new File("/sdcard/qqpassword.txt");
// File file = new File(path + "/qqpassword2.txt");
File file = new File(Environment.getExternalStorageDirectory(), "/qqpassword2.txt");
FileOutputStream fos = new FileOutputStream(file);
fos.write(content.getBytes());
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
&如何获取sdcard的大小?
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getPath());
long blockSize = statFs.getBlockSize();
long blockCount = statFs.getBlockCount();
long sdCardSize = blockSize*blockC
Log.d(tag,""+sdCardSize );
这里使用的是Environment中的方法获取到sdcard的路径,然后将其路径通过StatFs类,该类主要获取指定文件路径下的文件信息(filesystem info).
获取其块大小,块数量.
阅读(...) 评论()Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎... - 推酷
Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎...
本文主要介绍如何写数据到sd卡,这里主要到的技术是Environment中的方法.
2.实现代码:
/datasave/src/com/amos/datasave/savePasswordService.java
//写数据到sdcard
public void savePasswordToSDCard(String name, String password) {
// android 2.1 /sdcard/xx.txt
// android 2.2 /mnt/sdcard/xx.txt
// self_define /excard/xx.txt
File externalStorageDirectory = Environment.getExternalStorageDirectory();
String path = externalStorageDirectory.getPath();
System.out.println(&path:& + path);
// 要存储的内容
String content = name + &:& +
Log.d(tag, &检验sdcard是否可用?&);
//判断sdcard是否存在?
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Log.d(tag, &sdcard不可用!&);
Toast.makeText(context, &没有找到SDCard!&, Toast.LENGTH_LONG);
// File file = new File(&/sdcard/qqpassword.txt&);
// File file = new File(path + &/qqpassword2.txt&);
File file = new File(Environment.getExternalStorageDirectory(), &/qqpassword2.txt&);
FileOutputStream fos = new FileOutputStream(file);
fos.write(content.getBytes());
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
&在android2.1及以前版本中,其sdcard目录在根目录,2.2,2.3以后其sdcard目录就变成了/mnt/sdcard了,以及一些厂商自定义的android系统,可能也会把sdcard的名称改的各不相同.这里如果还是用绝对路径,那么程序的兼容性将会大大降低.这里主要用到了Enviroment类.
android.os.Environment
其主要方法有:
getRootDirectory()----&/ &获取根目录
getDataDirectory()----&/data 获取data目录
getExternalStorageDirectory()---&/sdcard 获取sd卡目录
getDownloadCacheDirectory()---&/cache 获取下载文件的缓存目录
getExternalStorageState---&sdcard的状态,removed,unmounted,checking,nofs,mounted,mounted_ro,shared,unmountable,bad_removal
完整的savePasswordService.java文件为:
package com.amos.
import java.io.F
import java.io.FileOutputS
import android.annotation.SuppressL
import android.content.C
import android.os.E
import android.util.L
import android.widget.T
@SuppressLint(&WorldWriteableFiles&)
public class savePasswordService {
private String tag = &savePasswordService&;
public savePasswordService(Context context) {
this.context =
public void savePasswordToFile(String name, String password) {
// 这里设置文件的权限
String content = name + &:& +
Log.d(tag, &设置文件的读写权限&);
FileOutputStream fileOutput = context.openFileOutput(&LoginTestConfig.txt&, Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
fileOutput.write(content.getBytes());
fileOutput.flush();
fileOutput.close();
} catch (Exception e) {
Log.d(tag, &设置文件的读写权限失败!&);
e.printStackTrace();
//写数据到sdcard
public void savePasswordToSDCard(String name, String password) {
// android 2.1 /sdcard/xx.txt
// android 2.2 /mnt/sdcard/xx.txt
// self_define /excard/xx.txt
File externalStorageDirectory = Environment.getExternalStorageDirectory();
String path = externalStorageDirectory.getPath();
System.out.println(&path:& + path);
// 要存储的内容
String content = name + &:& +
Log.d(tag, &检验sdcard是否可用?&);
//判断sdcard是否存在?
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Log.d(tag, &sdcard不可用!&);
Toast.makeText(context, &没有找到SDCard!&, Toast.LENGTH_LONG);
// File file = new File(&/sdcard/qqpassword.txt&);
// File file = new File(path + &/qqpassword2.txt&);
File file = new File(Environment.getExternalStorageDirectory(), &/qqpassword2.txt&);
FileOutputStream fos = new FileOutputStream(file);
fos.write(content.getBytes());
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
&如何获取sdcard的大小?
StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getPath());
long blockSize = statFs.getBlockSize();
long blockCount = statFs.getBlockCount();
long sdCardSize = blockSize*blockC
Log.d(tag,&&+sdCardSize );
这里使用的是Environment中的方法获取到sdcard的路径,然后将其路径通过StatFs类,该类主要获取指定文件路径下的文件信息(filesystem info).
获取其块大小,块数量.
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见

我要回帖

更多关于 external device 的文章

 

随机推荐