當前位置:首頁 » 安卓系統 » 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-04-28 05:34:20 瀏覽:774
電腦伺服器的品牌型號怎麼查 發布:2024-04-28 04:33:06 瀏覽:138
文件上傳ui 發布:2024-04-28 04:07:14 瀏覽:483
我的世界pe登伺服器 發布:2024-04-28 04:05:58 瀏覽:672
如何監控資料庫 發布:2024-04-28 03:44:07 瀏覽:28
測溫一體機怎麼配置 發布:2024-04-28 03:11:56 瀏覽:591
大生活迅雷下載ftp 發布:2024-04-28 03:11:09 瀏覽:511
python如何生成隨機數 發布:2024-04-28 02:21:59 瀏覽:169
小雨游戲解說我的世界伺服器 發布:2024-04-28 02:08:12 瀏覽:877
安卓怎麼刪除賬戶 發布:2024-04-28 02:06:50 瀏覽:829