当前位置:首页 » 安卓系统 » android保存到文件

android保存到文件

发布时间: 2022-10-28 17:42:38

㈠ Android怎么把处理的结果保存到文件中

我刚才特意试了一下在自己的代码里加了点调试信息

String user = _loginUser.getText().toString();
int firstCR = user.indexOf("\n");

_loginUser是我UI中的EditText,在其中我输入了3行文字,每行文字我都是手动按回车键换行,这样取出来的文本是带有换行符的。

但是你如果是一直输入满后让EditText自动换行的话,这样取出来是不带换行符的。这样其实是很有道理的,自动换行本来就不会给你插入换行符,它只是由于UI的边界,看起来像换行了一样。

我觉得有种简便办法可以解决。
int lineCount = _loginUser.getLineCount();
这样可以取得EditTex里的行数
把它和里面找到的'\n'比较一下数量,就知道你的这段文本大概是个什么情况。

1 如果行数和\n数量对得上,说明每行都是手工回车换行的这种最简单,直接保存。

2 如果\n为0说明都是ui自动换行的,这样也简单,把总字数和行数一计算就知道有多少行,每行多少字,然后自己存盘时插入换行符。当然这样不太准确,算是折中。

3 对不上,说明有自动换行,也有手动换行,这种其实很麻烦,可以参考2的办法解决了。

总之没有太好的办法,毕竟EditText没法按行数取得文本

你可以自己覆写一个EditText的子类,来提供这样的方法。

㈡ android responsebody保存文件到xls,结果变成了txt

如下:
步骤1:在word中打开受损文档,然后单击“文件-另存为”,接着在保存类型列表中选中“RTF(*.rtf)”格式,并单击保存。步骤2:关闭受损文档,然后打开刚才保存的RTF各市文件,再依次点击“文件-另存为”,在“保存类型”列表中选中“word文档(*.doc)”格式并保存,现在,关闭当前RTF文档,打开转换后的word文档即可恢复如初了。小提示:word与RTF的相互转换将保留其原格式,如果没有纠正文件损坏,那么可以尝试与其它字处理格式进行相互转换,例如先转换为纯文本格式(*.txt),最后在转换回word格式。

㈢ Android 保存图片到本地。

这里只介绍按下“保存”后如何将一个Bitmap对象保存为图片文件的执行步骤,对图片的下载,图片到Bitmap对象的转换,Bitmap对象的格式转换和压缩,以及界面设计部分全部都忽略了。

  • 确定存储路径

  • 获取外部存储权限

  • 确定外部存储状态

  • 确定文件名

  • 保存到文件中

  • 发送广播,通知系统扫描保存后的文件

  • 确定存储路径

    在Android中文件存储路径包括内部存储和外部存储两种类型。

    对内部存储,当一个app被安装到手机后,Android系统会在内部存储的/data/data/目录下创建一个以包名称命名的文件夹。例如/data/data/com.sohu.inputmethod.sogou/。一个应用对内部存储的所有访问都被限制在这个文件夹中,也就是说Android应用只能在该目录中读取,创建,修改文件。对该目录之外的其他内部存储中的目录都没有任何操作的权限。因此,如果将图片保存在内部存储中,只能被应用自身读取,其他应用均无法读取。如果需要让系统图库,相册或其他应用能够找到保存的图片,必须将图片保存到外部存储中。

    对外部存储,当一个app被安装到手机后,Android系统会在外部存储的/Android/data/目录下创建一个以包名命名的文件夹(这里第一个/不是根路径,而是相对外部存储所挂载路径的相对路径)。例如/storage/emulated/0/Android/data/com.sohu.inputmethod/。这个路径同样只能被应用自身读取,其他应用不能访问。因此,也不能将图片保存在这个目录中。

    除外部存储的/Android目录之外的其他目录一般都是可以被其他应用访问的。目前,大多数应用都会在外部存储的根路径下建立一个类似包名的多层目录,以存储需要共享的文件。例如/storage/emulated/0/sogou/image/。还需要注意的是,很多查看图片的应用都支持按照文件夹来查看图片。如果将图片所在的文件夹取名为image,photo之类的,就无法和其他文件夹区分开,用户也不能识别该文件夹的用途。因此最好取一个有区分度的文件夹名字,例如网络贴吧就保存在/tieba目录,微信是保存在/tencent/MicroMsg/WeiXin目录。

    由于Android系统的碎片化问题,不同设备上外部存储的路径很可能会不同,因此,不能直接使用/storage/emulated/0/作为外部存储的根路径。
    Android SDK中 Environment类 提供了getExternalStorageDirectory()方法来获取外部存储的根路径。示例如下:

    [java]view plain

  • Stringdir=Environment.getExternalStorageDirectory().getAbsolutePath()+"/tencent/MicroMsg/WeiXin/"

  • 需要注意的是Environment.getExternalStorageDirectory()返回的路径中最后一个字符不是/,如果需要创建子目录,需要在子目录的前后都加上/。

    获取外部存储权限

    由于需要在外部存储中写文件,需要在AndroidManifest.xml中增加如下的权限声明。

    [java]view plain

  • <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  • 确定外部存储状态

    由于外部存储需要被挂载,也可以被卸载,在写入文件之前,需要先判断外部存储的状态是否正常。只有状态正常情况下才可以执行保存文件的操作。获取外部存储状态同样是通过Environment类,通过Environment.getExternalStorageState()可以得到一个字符串,来表示外部存储的状态。同时在Environment类中定义了一系列的String常量表示不同的状态。在所有的状态中只有内部存储处于Environment.MEDIA_MOUNTED状态时才可以读写文件,因此,需要将获取到的状态和Environment.MEDIA_MOUNTED做比较,如果不是Environment.MEDIA_MOUNTED状态,就返回保存失败。示例如下。

    [java]view plain

  • //获取内部存储状态

  • Stringstate=Environment.getExternalStorageState();

  • //如果状态不是mounted,无法读写

  • if(!state.equals(Environment.MEDIA_MOUNTED)){

  • return;

  • }



  • 确定文件名

    保存的图片文件名可以由应用根据自身需要自行确定,一般来说需要有一个命名规则,然后根据命名规则计算得到文件名。
    这里列举几种常见的命名规则。

  • 随机命名
    这种命名规则是随机生成一个字符串或一组数字来对图片命名。
    字符串可以通过UUID来生成,数字可以通过Random()类来生成,例如:

    [java]view plain

  • //通过UUID生成字符串文件名

  • StringfileName1=UUID.randomUUID().toString();

  • //通过Random()类生成数组命名

  • Randomrandom=newRandom();

  • StringfileName2=String.valueOf(random.nextInt(Integer.MAX_VALUE));

  • 这种命名规则是按照数字从小到大的顺序来对图片命名。
    在程序启动时先获取图片文件名中当前最大数字的文件名,之后每保存一张图片就将数字加1即可。

  • 时间命名
    这种命名规则是根据保存图片的当前系统时间来对图片命名。
    系统时间可以通过System.currentTimeMillis()来获取,不过System.currentTimeMillis()获取到的时间是一个long型的整数,如果用它做文件名,无法通过文件名直接看出文件的具体保存时间。可以通过SimpleDateFormat先对当前时间做格式化,然后再将其作为文件名来使用。例如:

    [java]view plain

    使用这种命名规则来命名需要注意的是同一秒钟可能会有多张图片需要保存,在得到当前系统时间对应的文件名后,需要判断该文件是否存在。如果文件已经存在,需要重新生成文件名。重新生成的文件名可以在之前的文件名后加上一个随机数后缀,或者是用毫秒数做后缀。

  • Calendarnow=newGregorianCalendar();

  • SimpleDateFormatsimpleDate=newSimpleDateFormat("yyyyMMddHHmmss",Locale.getDefault());

  • StringfileName=simpleDate.format(now.getTime());

  • 文件URL命名
    每张网络图片都有一个对应的图片URL,可以根据图片的URL来对图片命名。
    不过URL中会包含一些不能用作文件名的特殊字符,此外直接用URL来命名可能会带来安全问题。为了避免这两个问题,可以将图片URL的MD5值作为文件名来使用。由于MD5是不可逆的,也就无法通过MD5值反向得到图片URL,同时MD5值对应的字符串只包含[0-9A-Z],不包含特殊字符,可是作为文件名使用。
    由于每张图片的URL是唯一的,其对应的文件名也就是唯一的。如果需要每张网络图片只能生成一个文件,不允许保存为多份拷贝,可以用这种命名规则。在得到URL对应的文件名后,先判断文件是否已经存在,如果已经存在,直接覆盖或不处理。

  • 保存到文件中

    保存图片文件时,通过Bitmap的compress()方法将Bitmap对象压缩到一个文件输出流中,然后flush()即可。示例如下。

    [java]view plain

  • try{

  • Filefile=newFile(dir+fileName+".jpg");

  • FileOutputStreamout=newFileOutputStream(file);

  • mBitmap.compress(Bitmap.CompressFormat.JPEG,100,out);

  • out.flush();

  • out.close();

  • }catch(Exceptione){

  • e.printStackTrace();

  • }



  • 发送广播,通知系统扫描保存后的文件

    至此,已经实现将Bitmap对象保存成外部存储中的一个jpg格式的文件。但此时该文件只是保存在外部存储的一个目录中,必须进入其所在的目录中才可以看到。在系统图库,相册和其他应用中无法看到新建的图片文件。为了让其他应用能够知道图片文件被创建,必须通知MediaProvider服务将新建的文件添加到图片数据库中。

    Android系统中常驻一个MediaProvider服务,对应的进程名为android.process.media,此服务用来管理本机上的媒体文件,提供媒体管理服务。在系统开机或者收到外部存储的挂载消息后,MediaProvider会调用MediaScanner,MediaScanner会扫描外部存储中的所有文件,根据文件类型的后缀将文件信息保存到对应的数据库中,供其他APP使用。

    MediaScannerReceiver是一个广播接收者,当它接收到特定的广播请求后,就会去扫描指定的文件,并根据文件信息将其添加到数据库中。当图片文件被创建后,就可以发送广播给MediaScannerReceiver,通知其扫描新建的图片文件。示例如下。

    [java]view plain

  • try{

  • Filefile=newFile(dir+fileName+".jpg");

  • FileOutputStreamout=newFileOutputStream(file);

  • mBitmap.compress(Bitmap.CompressFormat.JPEG,100,out);

  • out.flush();

  • out.close();

  • //保存图片后发送广播通知更新数据库

  • Uriuri=Uri.fromFile(file);

  • sendBroadcast(newIntent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,uri));

  • }catch(Exceptione){

  • e.printStackTrace();

  • }



  • 图片的异步保存

    保存图片文件时,如果图片很大,或需要同时保存多张图片时,就需要较多的时间。为了避免阻塞UI线程,出现帧率下降或ANR,通常需要将图片保存操作放到线程中去执行。当图片保存完毕后通过sendMessage()方法通知UI线程保存结果。
    将图片保存放到后台线程去执行需要增加一些同步机制避免一些多线程问题。例如有两张图片需要保存,分别放到两个线程中去执行,保存图片时文件名以数字顺序增加。第一个线程选中文件名为125.jpg,但此时文件还未创建,第二个线程判断125.jpg不存在,于是也选取125.jpg作为文件名,两张图片就保存到同一个文件中了。

㈣ android下载文件保存到哪里如何执行下载好的apk文件

例如UC,它是放sdcard下的,下载之后,我自己的做法是些到data/data/包名/files/中,这个我想market肯定是这样做的更新,掉系统的,传uri进去Intent
intent
=
new
Intent(Intent.ACTION_VIEW);intent.setDataAndType(uri,
"application/vnd.android.package-archive");startActivity(intent);这里涉及到一个问题就是,你这样装,肯定不是从market上更新的,而有的手机是有一个安全设置就是无法装非market上的程序,你可以调那个setting,设置了继续掉安装的

㈤ 天翼云盘如何通过Android客户端把文件保存到心标文件

您好,用户在天翼云盘客户端中打开文件列表,点击文件名前面的心选择框,操作栏即出现心标符号,点击该符号,文件即保存到心标文件

㈥ 安卓如何将log保存到文件中

相信大家在做应用调试的时候,不可能时时通过USB线连着电脑去查看log信息,所以,将应用的log信息保存到手机本地就很有必要了,有助我们从这些log信息中提取有用的部分,以解决一些bug,下面我把网上分享的代码中作了一些精简,作为开发者使用,个人觉得没必要通过用户上传给我们,用户上传的不需要这么庞大的log信息,仅仅那部分崩溃的log信息即可,可参考我的另外一篇blog:http://blog.csdn.net/weidi1989/article/details/7927273。
好了,废话不多说,直接分享封装好的log信息类:LogcatHelper
package com.way.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import android.content.Context;
import android.os.Environment;

/**
* log日志统计保存
*
* @author way
*
*/

public class LogcatHelper {

private static LogcatHelper INSTANCE = null;
private static String PATH_LOGCAT;
private LogDumper mLogDumper = null;
private int mPId;

/**
*
* 初始化目录
*
* */
public void init(Context context) {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {// 优先保存到SD卡中
PATH_LOGCAT = Environment.getExternalStorageDirectory()
.getAbsolutePath() + File.separator + "miniGPS";
} else {// 如果SD卡不存在,就保存到本应用的目录下
PATH_LOGCAT = context.getFilesDir().getAbsolutePath()
+ File.separator + "miniGPS";
}
File file = new File(PATH_LOGCAT);
if (!file.exists()) {
file.mkdirs();
}
}

public static LogcatHelper getInstance(Context context) {
if (INSTANCE == null) {
INSTANCE = new LogcatHelper(context);
}
return INSTANCE;
}

private LogcatHelper(Context context) {
init(context);
mPId = android.os.Process.myPid();
}

public void start() {
if (mLogDumper == null)
mLogDumper = new LogDumper(String.valueOf(mPId), PATH_LOGCAT);
mLogDumper.start();
}

public void stop() {
if (mLogDumper != null) {
mLogDumper.stopLogs();
mLogDumper = null;
}
}

private class LogDumper extends Thread {

private Process logcatProc;
private BufferedReader mReader = null;
private boolean mRunning = true;
String cmds = null;
private String mPID;
private FileOutputStream out = null;

public LogDumper(String pid, String dir) {
mPID = pid;
try {
out = new FileOutputStream(new File(dir, "GPS-"
+ MyDate.getFileName() + ".log"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

/**
*
* 日志等级:*:v , *:d , *:w , *:e , *:f , *:s
*
* 显示当前mPID程序的 E和W等级的日志.
*
* */

// cmds = "logcat *:e *:w | grep \"(" + mPID + ")\"";
// cmds = "logcat | grep \"(" + mPID + ")\"";//打印所有日志信息
// cmds = "logcat -s way";//打印标签过滤信息
cmds = "logcat *:e *:i | grep \"(" + mPID + ")\"";

}

public void stopLogs() {
mRunning = false;
}

@Override
public void run() {
try {
logcatProc = Runtime.getRuntime().exec(cmds);
mReader = new BufferedReader(new InputStreamReader(
logcatProc.getInputStream()), 1024);
String line = null;
while (mRunning && (line = mReader.readLine()) != null) {
if (!mRunning) {
break;
}
if (line.length() == 0) {
continue;
}
if (out != null && line.contains(mPID)) {
out.write((MyDate.getDateEN() + " " + line + "\n")
.getBytes());
}
}

} catch (IOException e) {
e.printStackTrace();
} finally {
if (logcatProc != null) {
logcatProc.destroy();
logcatProc = null;
}
if (mReader != null) {
try {
mReader.close();
mReader = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
out = null;
}

}

}

}

}

记得加上权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_LOGS" />

另外把那个时间的工具类也分享一下:
package com.way.util;

import java.text.SimpleDateFormat;
import java.util.Date;

public class MyDate {
public static String getFileName() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String date = format.format(new Date(System.currentTimeMillis()));
return date;// 2012年10月03日 23:41:31
}

public static String getDateEN() {
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1 = format1.format(new Date(System.currentTimeMillis()));
return date1;// 2012-10-03 23:41:31
}

}

OK,所有事情做完之后,在我们的应用中start一下就OK了,使用完之后,记得调用一下stop:
public class GPSApplication extends Application {

@Override
public void onCreate() {
// TODO Auto-generated method stub
LogcatHelper.getInstance(this).start();
}
}

㈦ 安卓机微信保存的文件在哪里

如果您使用的是vivo手机,辛苦您按照以下方法查看:
文件管理版本V5.5.2.9以下(安卓8.1及以上机型):微信新版本更改了文件保存目录,请您进入文件管理--手机存储/所有文件/本地文件/SD卡Android/data/com.tencent.mm/MicroMsg/Download中进行查看,后续文件管理更新会进行优化,届时可在文件管理--微信分类下进行查看。
备注:文件管理V5.5.2.9开始即可在微信分类中显示。
文件管理版本V5.5.2.9以下(安卓8.1以下机型):文件管理分类下不支持显示。
微信新版本更改了文件保存目录,请您进入文件管理--手机存储/所有文件/本地文件/SD卡--Android/data/com.tencent.mm/MicroMsg/Download中进行查看。
微信文件的保存路径如下:
1、进入文件管理--微信中查看最近传输的文件;
2、进入文件管理--本地文件/所有文件/SD卡/手机存储--tencent--MicroMsg--WeiXin或第一个文件夹中查找;
3、进入文件管理--本地文件/所有文件/SD卡/手机存储--Android--data--com.tencent.mm--MicroMsg--Download中查看。

㈧ Android数据存储到什么文件中

android数据的存储:
1、SharedPreferences
可以存储简单的数据,是以key-value的形式存储的。
存储在你工程目录下/shared_prefs/activityming.xml文件中
2、通过文件。存在files/XXX.cfg
3、SQLite数据库中

㈨ android开发中如何通过点击按钮将EditText中的内容保存到SD卡的一个文件中

packagecom.save;

importjava.io.DataOutputStream;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.FileWriter;
importjava.io.RandomAccessFile;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;

{
privateEditTexteditText1;
privateButtonbutton1;
StringfilePath=Environment.getExternalStorageDirectory()+"/save/";
StringfileName="save.txt";

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initView();
}

privatevoidinitView(){
editText1=(EditText)findViewById(R.id.editText1);
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(newOnClickListener(){

@Override
publicvoidonClick(Viewv){
writeTxtToFile(editText1.getText().toString().trim(),filePath,fileName);
}
});
}

//将字符串写入到文本文件中
publicvoidwriteTxtToFile(Stringstrcontent,StringfilePath,StringfileName){
//生成文件夹之后,再生成文件,不然会出错
makeFilePath(filePath,fileName);

StringstrFilePath=filePath+fileName;
//每次写入时,都换行写
StringstrContent=strcontent+" ";
try{
Filefile=newFile(strFilePath);
if(!file.exists()){
Log.d("TestFile","Createthefile:"+strFilePath);
file.getParentFile().mkdirs();
file.createNewFile();
}
RandomAccessFileraf=newRandomAccessFile(file,"rwd");
raf.seek(file.length());
raf.write(strContent.getBytes());
raf.close();

}catch(Exceptione){
e.printStackTrace();
}
}

//生成文件
publicFilemakeFilePath(StringfilePath,StringfileName){
Filefile=null;
makeRootDirectory(filePath);
try{
file=newFile(filePath+fileName);
if(!file.exists()){
file.createNewFile();
}
}catch(Exceptione){
e.printStackTrace();
}
returnfile;
}

//生成文件夹
(StringfilePath){
Filefile=null;
try{
file=newFile(filePath);
if(!file.exists()){
file.mkdir();
}
}catch(Exceptione){
e.printStackTrace();
}
}
}

添加这个权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>



xml文件自己写吧,太简单了

㈩ Android11如何保存微信/QQ接收到的文件

Android11增强了存储管理,后果之一就是:很多人不知道怎么找到微信/QQ接收到的文件了。

一、直接进入正题,如何保存

以微信为例,一张图告诉你,怎么把别人发你的文件存下来:

1、点击接收到的文件,例如名字是 test-...point.sgf

2、点击右上角“...”

3、点击“保存到手机”

图的最右边就是保存结果了,提示会一闪而过,但这里会告诉你具体位置:

/sdcard/Download/WeiXin/随机生成的文件名.sgf

这里:/sdcard代表“内部存储”(也可能显示为其它字符串),Download/WeiXin/代表具体位置,再后边是文件名。

微信会自动把原来的文件 改名 ,这很不方便,但没办法。

二、如何找到这个保存下来的文件

1、在手机桌面找到 文件管理 (任何一个手机都会自带一个这样的app),例如

2、进入后找到“手机”这个标签,然后找到“Download”文件夹

3、进入Download文件夹后,找到WeiXin文件夹

4、进入WeiXin文件夹后找到文件

这个文件,你可以点击它,呼出所对应的app来读取它。

这个段落是针对围棋宝典app用户:如果文件后缀是sgf(围棋棋谱),点这个文件就可以呼出菜单,里边会有“围棋宝典”,点它就打开这个sgf了(前提是对围棋宝典app开放了存储权限,否则围棋宝典app无法读取这个文件夹里的文件)。写到这里,你也许发现:Android11系统,微信接收到的sgf,点击后围棋宝典无法打开它,但围棋宝典却能打开文件管理内的sgf;猜测可能是因为微信有一个信任app列表。

三、QQ接收到的文件如何保存?

前2步和本文步骤“一”里边的一样:点击接收到的文件,点击右上角“...”,然后底部会出现菜单:

对,发到微信里,然后就可以走本文步骤“一”了。

热点内容
存储卡型号 发布:2024-05-10 19:02:55 浏览:604
监控存储显示休眠状态怎么回事 发布:2024-05-10 18:51:33 浏览:19
安安兔检测怎么检测配置 发布:2024-05-10 18:34:04 浏览:998
九江云服务器哪家公司好 发布:2024-05-10 18:34:03 浏览:853
剑侠情缘手游文件夹 发布:2024-05-10 18:08:10 浏览:897
sqlin排序 发布:2024-05-10 17:59:01 浏览:469
安卓开机优化应用什么问题 发布:2024-05-10 17:55:34 浏览:317
怎么将安卓手机内存扩容 发布:2024-05-10 17:55:29 浏览:702
计算机编程的发展 发布:2024-05-10 17:37:53 浏览:141
40款方舟编译过的软件 发布:2024-05-10 17:24:45 浏览:483