當前位置:首頁 » 安卓系統 » 寫文件android

寫文件android

發布時間: 2022-07-03 02:27:14

㈠ android 讀寫文件需要哪些許可權

<!--往sdcard中寫入數據的許可權 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--在sdcard中創建/刪除文件的許可權 --><uses-permission android:name="android.permission.MOUNT_U

  1. android中的apk必須簽名

    這種簽名不是基於權威證書的,不會決定某個應用允不允許安裝,而是一種自簽名證書。

    重要的是,android系統有的許可權是基於簽名的。比如:system等級的許可權有專門對應的簽名,簽名不對,許可權也就獲取不到。默認生成的APK文件是debug簽名的。

  2. 獲取system許可權時用到的簽名,見:如何使Android應用程序獲取系統許可權。基於UserID的進程級別的安全機。這種簽名不是基於權威證書的,不會決定某個應用允不允許安裝,而是一種自簽名證書。重要的是,android系統有的許可權是基於簽名的。

㈡ 如何讀寫Android文件

在android中的文件放在不同位置,它們的讀取方式也有一些不同。
本文對android中對資源文件的讀取、數據區文件的讀取、SD卡文件的讀取及RandomAccessFile的方式和方法進行了整理。供參考。

http://www.cnblogs.com/bastard/archive/2013/03/04/2943302.html

㈢ Android開發之如何讀寫文件

【轉】

首先介紹如何存儲數據,顯然,要將數據從應用中輸出到文件中,必須得到一個輸出流outPutStream,然後往輸出流中寫入數據,在這里Android自帶了一個得到應用輸出流的方法

FileOutputStream fos =context.openFileOutput(「yuchao.txt」,Context.MODE_PRIVATE); (1)

其中第一個屬性為文件名,第二個屬性為讀寫模式(有關讀寫模式的說明下面將詳細闡述),

然後在文件輸出流fos中便可以寫入數據

Fos.write(「Hi,」I』m Chao Yu!」.getBytes());

用完文件輸出流之後記得關閉

fos.close();

這樣,在/data/data/packageName/file目錄下就生成了一個文件名為yuchao.txt的文件,文件中的內容為」 Hi,I』m Chao Yu!」

有關(1)中讀寫模式其實就是制定創建文件的許可權以及在讀寫的時候的方式,Android中提供了以下幾種讀寫模式

Context.MODE_PRIVATE = 0

該模式下創建的文件其他應用無權訪問,並且本應用將覆蓋原有的內容

Context.MODE_APPEND = 32768

該模式下創建的文件其他應用無權訪問,並且本應用將在原有的內容後面追加內容

Context.MODE_WORLD_READABLE = 1

該模式下創建的文件其他應用有讀的許可權

Context.MODE_WORLD_WRITEABLE = 2

該模式下創建的文件其他應用有寫的許可權

如果需要將文件設置為外部應用可以讀寫,可將讀寫模式設置為Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE

一般情況下,各個應用維護的數據都在一個特定的文件夾中,即上面所提到的/data/data/packageName/file(存在於手機存儲中),但手機內存畢竟有限,所以有些情況下,我們需要往SD卡中寫入數據文件,這其實和普通的java web 應用步驟一樣,都是先創建特針對特定目錄特定文件的輸出流,然後往輸出流中寫數據,這里要注意一個方法,就是獲取SD卡根目錄的方法,隨著Android系統不斷升級,SD卡的根目錄隨時都有可能改變,Android中得到SD卡根目錄的方法是

File sdCardDir = Environment.getExternalStorageDirectory();

然後就可以進行下面的步驟

File saveFile = new File(sdCardDir, 「yuchao.txt」);

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("Hi,I』m ChaoYu".getBytes());

outStream.close();

值得注意的是,在往SD卡中寫數據的時候,健壯的代碼必須考慮SD卡不存在或者防寫的情況,故在寫入之前,先做判斷

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

……

}

接著,我們來學習下我們的應用程序如何讀取文件中的數據,其實就是寫的逆向過程

若要讀取應用程序默認維護的文件(即/data/data/packageName/file目錄下的文件),首先得到文件輸入流

FileInputStream istream = this.context.openFileInput(「yuchao.txt」);

然後在內存中開辟一段緩沖區

byte[] buffer = new byte[1024];

然後創建一個位元組數組輸出流

ByteArrayOutputStream ostream = new ByteArrayOutputStream();

讀出來的數據首先放入緩沖區,滿了之後再寫到字元輸出流中

while((len=istream.read(buffer))!=-1){

ostream.write(buffer, 0, len);

}

最後關閉輸入流和輸出流

istream.close();

ostream.close();

將得到的內容以字元串的形式返回便得到了文件中的內容了,這里的流操作較多,故以一張圖片來說明,見圖1

return new String(ostream.toByteArray());

從SD卡中讀取數據與上述兩個步驟類似,故不再贅述,留給讀者自己思考

如在開發過程中進行SD卡地讀寫,切忌忘了加入許可權

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

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

至此,Android系統中有關文件數據的讀寫介紹完畢。

㈣ Android寫入txt文件

分以下幾個步驟:

  1. 首先對manifest注冊SD卡讀寫許可權

    AndroidManifest.xml
    <?xmlversion="1.0"encoding="utf-8"?>
    <manifestxmlns:android="

    package="com.tes.textsd"
    android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16"/>
    <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
    android:name="com.tes.textsd.FileOperateActivity"
    android:label="@string/app_name">
    <intent-filter>
    <actionandroid:name="android.intent.action.MAIN"/>
    <categoryandroid:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    </activity>
    </application>
    </manifest>
  2. 創建一個對SD卡中文件讀寫的類

    FileHelper.java
    /**
    *@Title:FileHelper.java
    *@Packagecom.tes.textsd
    *@Description:TODO(用一句話描述該文件做什麼)
    *@authorAlex.Z
    *@date2013-2-26下午5:45:40
    *@versionV1.0
    */
    packagecom.tes.textsd;
    importjava.io.DataOutputStream;
    importjava.io.File;
    importjava.io.FileOutputStream;
    importjava.io.FileWriter;
    importjava.io.FileInputStream;
    importjava.io.FileNotFoundException;
    importjava.io.IOException;
    importandroid.content.Context;
    importandroid.os.Environment;
    publicclassFileHelper{
    privateContextcontext;
    /**SD卡是否存在**/
    privatebooleanhasSD=false;
    /**SD卡的路徑**/
    privateStringSDPATH;
    /**當前程序包的路徑**/
    privateStringFILESPATH;
    publicFileHelper(Contextcontext){
    this.context=context;
    hasSD=Environment.getExternalStorageState().equals(
    android.os.Environment.MEDIA_MOUNTED);
    SDPATH=Environment.getExternalStorageDirectory().getPath();
    FILESPATH=this.context.getFilesDir().getPath();
    }
    /**
    *在SD卡上創建文件
    *
    *@throwsIOException
    */
    publicFilecreateSDFile(StringfileName)throwsIOException{
    Filefile=newFile(SDPATH+"//"+fileName);
    if(!file.exists()){
    file.createNewFile();
    }
    returnfile;
    }
    /**
    *刪除SD卡上的文件
    *
    *@paramfileName
    */
    publicbooleandeleteSDFile(StringfileName){
    Filefile=newFile(SDPATH+"//"+fileName);
    if(file==null||!file.exists()||file.isDirectory())
    returnfalse;
    returnfile.delete();
    }
    /**
    *寫入內容到SD卡中的txt文本中
    *str為內容
    */
    publicvoidwriteSDFile(Stringstr,StringfileName)
    {
    try{
    FileWriterfw=newFileWriter(SDPATH+"//"+fileName);
    Filef=newFile(SDPATH+"//"+fileName);
    fw.write(str);
    FileOutputStreamos=newFileOutputStream(f);
    DataOutputStreamout=newDataOutputStream(os);
    out.writeShort(2);
    out.writeUTF("");
    System.out.println(out);
    fw.flush();
    fw.close();
    System.out.println(fw);
    }catch(Exceptione){
    }
    }
    /**
    *讀取SD卡中文本文件
    *
    *@paramfileName
    *@return
    */
    publicStringreadSDFile(StringfileName){
    StringBuffersb=newStringBuffer();
    Filefile=newFile(SDPATH+"//"+fileName);
    try{
    FileInputStreamfis=newFileInputStream(file);
    intc;
    while((c=fis.read())!=-1){
    sb.append((char)c);
    }
    fis.close();
    }catch(FileNotFoundExceptione){
    e.printStackTrace();
    }catch(IOExceptione){
    e.printStackTrace();
    }
    returnsb.toString();
    }
    publicStringgetFILESPATH(){
    returnFILESPATH;
    }
    publicStringgetSDPATH(){
    returnSDPATH;
    }
    publicbooleanhasSD(){
    returnhasSD;
    }
    }
  3. 寫一個用於檢測讀寫功能的的布局

    main.xml
    <?xmlversion="1.0"encoding="utf-8"?>
    <LinearLayoutxmlns:android="

    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <TextView
    android:id="@+id/hasSDTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="hello"/>
    <TextView
    android:id="@+id/SDPathTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="hello"/>
    <TextView
    android:id="@+id/FILESpathTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="hello"/>
    <TextView
    android:id="@+id/createFileTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="false"/>
    <TextView
    android:id="@+id/readFileTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="false"/>
    <TextView
    android:id="@+id/deleteFileTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="false"/>
    </LinearLayout>
  4. 就是UI的類了

    FileOperateActivity.class
    /**
    *@Title:FileOperateActivity.java
    *@Packagecom.tes.textsd
    *@Description:TODO(用一句話描述該文件做什麼)
    *@authorAlex.Z
    *@date2013-2-26下午5:47:28
    *@versionV1.0
    */
    packagecom.tes.textsd;
    importjava.io.IOException;
    importandroid.app.Activity;
    importandroid.os.Bundle;
    importandroid.widget.TextView;
    {
    privateTextViewhasSDTextView;
    privateTextViewSDPathTextView;
    ;
    ;
    ;
    ;
    privateFileHelperhelper;
    @Override
    publicvoidonCreate(BundlesavedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    hasSDTextView=(TextView)findViewById(R.id.hasSDTextView);
    SDPathTextView=(TextView)findViewById(R.id.SDPathTextView);
    FILESpathTextView=(TextView)findViewById(R.id.FILESpathTextView);
    createFileTextView=(TextView)findViewById(R.id.createFileTextView);
    readFileTextView=(TextView)findViewById(R.id.readFileTextView);
    deleteFileTextView=(TextView)findViewById(R.id.deleteFileTextView);
    helper=newFileHelper(getApplicationContext());
    hasSDTextView.setText("SD卡是否存在:"+helper.hasSD());
    SDPathTextView.setText("SD卡路徑:"+helper.getSDPATH());
    FILESpathTextView.setText("包路徑:"+helper.getFILESPATH());
    try{
    createFileTextView.setText("創建文件:"
    +helper.createSDFile("test.txt").getAbsolutePath());
    }catch(IOExceptione){
    e.printStackTrace();
    }
    deleteFileTextView.setText("刪除文件是否成功:"
    +helper.deleteSDFile("xx.txt"));
    helper.writeSDFile("1213212","test.txt");
    readFileTextView.setText("讀取文件:"+helper.readSDFile("test.txt"));
    }
    }

㈤ Android開發進階:如何讀寫Android文件

Android AndroidAndroidAndroid 主要有四大組件成: 主要有四大組件成: 主要有四大組件成: 主要有四大組件成: 主要有四大組件成: 主要有四大組件成: Activity Activity Activity、ContentProvider 、Serviceerviceervice 、Intent IntentIntent Intent組成。 組成。 Android AndroidAndroidAndroid 文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何文件的運行主要需讀寫 四大組。本將介紹如何Android AndroidAndroidAndroid 文件,希望對正在 文件,希望對正在 文件,希望對正在 文件,希望對正在 文件,希望對正在 進行 AndroidAndroid AndroidAndroidAndroid 開發的朋友有所幫助。 開發的朋友有所幫助。 開發的朋友有所幫助。 開發的朋友有所幫助。 開

㈥ android10刪除文件後寫文件

android10刪除文件後寫文件如下
1.將數據存儲到文件中(文件默認存儲到data/data/包名/files目錄下)htmlpublic void save(String inputText) {//inputText為傳入的要保存的數據FileOutputStream out = null;BufferedWriter writer = null;try {= openFileOutput("data", Context.MODE_APPEND);//"data"為文件名,第二個參數為文件操做模式:文件已經存在,就往文件裡面追加類容,不重新建立文件。
writer = new BufferedWriter(new OutputStreamWriter(out));writer.write(inputText);} catch (IOException e) {e.printStackTrace();} finally {try {if (writer != null) {writer.close();
2.從文件中讀取數據android//讀取數據= load();if (!TextUtils.isEmpty(inputText1)) {//非空判斷,傳入為null和空字元串時返回true//將數據展現到listview控制項 );//android.R.layout.simple_list_item_1android內置子布adapter.add(inputText1);ListViewBattery5.setAdapter(adapter)。

㈦ Android可以寫文件的目錄包括哪些

Android手機下可以寫文件的目錄除了

  • Environment.getExternalStorageDirectory()獲取的路徑也就是/sdcard

  • /data/data/packageName/安裝包路徑下

像/storage/sdcard0,/mnt/sdcard都是軟鏈接到/sdcard

一般非root手機來說都有內置sdcard 這個肯定可以寫的,如果有外置sdcard這個也是可以的,再就是你應用安裝目錄下的這都是可以的。root後的我就不多說了。還有個/data/local/tmp

㈧ android 讀寫文件需要哪些許可權

<!--往sdcard中寫入數據的許可權 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--在sdcard中創建/刪除文件的許可權 --><uses-permission android:name="android.permission.MOUNT_U

  1. android中的apk必須簽名

    這種簽名不是基於權威證書的,不會決定某個應用允不允許安裝,而是一種自簽名證書。

    重要的是,android系統有的許可權是基於簽名的。比如:system等級的許可權有專門對應的簽名,簽名不對,許可權也就獲取不到。默認生成的APK文件是debug簽名的。

  2. 獲取system許可權時用到的簽名,見:如何使Android應用程序獲取系統許可權。基於UserID的進程級別的安全機。這種簽名不是基於權威證書的,不會決定某個應用允不允許安裝,而是一種自簽名證書。重要的是,android系統有的許可權是基於簽名的。

㈨ android 如何讀寫文件

讀文件:

1、通過File獲取文件

2、打開輸入流,讀取文件

寫文件:

1、創建文件

2、打開輸出流,寫入文件內容


示例:

讀文件:
Stringcontent="";//文件內容字元串
//通過路徑/sdcard/foo.txt打開文件
Filefile=newFile("/sdcard/foo.txt");
try{
InputStreaminstream=newFileInputStream(file);//讀取輸入流
InputStreamReaderinputreader=newInputStreamReader(instream);//設置流讀取方式
BufferedReaderbuffreader=newBufferedReader(inputreader);
while((line=buffreader.readLine())!=null){
content+=line+" ";//讀取的文件內容
}
}catch(Exceptionex){
}
寫文件:
Filefile=newFile("/sdcard/foo.txt");//
if(!file.exists())
file.createNewFile();//如果文件不存在,創建foo.txt
try{
OutputStreamoutstream=newFileOutputStream(file);//設置輸出流
OutputStreamWriterout=newOutputStreamWriter(outstream);//設置內容輸出方式
out.write("文字內容");//輸出內容到文件中
out.close();
}catch(java.io.IOExceptione){
e.printStackTrace();
}

㈩ Android 怎樣在應用程序中向文件里寫入數據

  1. Android 怎樣在應用程序中向文件里寫入數據?在AndroidManifest.xml中添加, <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />,解決!

  2. 另外了解一下android的數據存儲方式:文件流的讀取,SQLite,Content Provider以及Preference.。 註:resource和assets中的文件用戶方面是只可以讀取不能夠進行寫的操作的。
    Content Provider作為程序之間唯一共享數據途徑,用在這里不是很合適。所以,
    第一種方式,使用FileInputStream,FileOutputStreami類實現文件I/O操作,直接往手機中存儲數據。
    第二種方式,使用SQLite,通過SQLiteDatabase類中方法操作數據。
    第三種方式,Preference用於存儲簡單數據類型的數據,一些設置信息的保存。個人認為用在這里最合適。 它利用鍵值對存儲的。例:
    存儲:SharedPreferences.Editor editor =sp.edit();
    editor.putString(KEY_TEXT,"yonghu");
    editor.commit();
    獲取 :sp =getPreferences(MODE_PRIVATE);

    String result =sp.getString(KEY_TEXT,null)

  3. Android保存數據幾種常用方法解析

    它應用於手機中能夠幫助我們實現許多需求。比如今天為大家介紹的Android保存數據,就是其中一個比較重要的操作技巧。Android組件相關概念總結Android傳值方法細講Android橫豎屏切換正確實現方式分享Android開發環境相關配置概覽Android NDK具體作用講解對於我們所熟悉的大部分軟體都有一個比較典型的特點,應用現有的數據根據不同的需求來得到相應的結果。例如,我們最常用的Officeword、Excel、PowerPoint等辦公軟體,它們都是幫助我們完成某種特定的需求,同時由其所產生的數據或者文檔又可以被其它軟體所讀取和做進一步的優化等等,在這個層面上可以看成是這些軟體通過相同的文件標准來共享數據。但是對於Android最大的不同點在於,其平台上的應用軟體所存儲的數據或者文件是私有,僅僅可以通過它自身才可以訪問其所包含的數據資源。那麼基於這樣的限制,該如何在Android平台上實現不同程序間的數據共享呢?答案非常簡單 – 應用ContentProviders,這是建立在Android平台上用於定義統一的數據標准。Android提供了針對不同數據類型的ContentProviders來滿足各種需要。例如:Image、Audio、Video和通訊錄信息類等。閱讀下邊的文檔之前,最好先熟悉Content Providers的概念。有了上邊所提到Content Providers,接下來就要處理在共享文件過程中的存儲環節了,這里有四種方法分別適用於不同情況的需求。它們都各自有相應的優缺點,所以當開發者決定選擇應用哪種方法之前,先要考慮當前所操作的情況是否適合於所選擇的方法。Preferences Files Databases Network 接下來將依次介紹上訴四個Android保存數據方法:Preferences從其保存數據的結構來分析,這是一個相對較輕量級的存儲數據的方法。類似於我們常用的ini文件保存軟體初始化設置,同樣在Android平台常用於存儲較簡單的參數設置。例如,可以通過它保存上一次用戶所作的修改或者自定義參數設定,當再次啟動程序後依然保持原有的設置。通過Context.getSharedPreferences()方法來讀寫數值,這個方法通過設置name來使得同一個程序內的其它模塊共享數據。如果不需要與其它模塊共享數據,可以使用Activity.getPreferences()方法保持數據私有。需要著重強調一點,無法直接在多個程序間共享Preferences數據(不包括使用Content Providers)。通過一個實例來了解實際使用方法:import android.app.Activity; import android.content.SharedPreferences; public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; . . . . Override protected void onCreate(Bundle state){ super.onCreate(state); . . . . // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop(){ super.onStop(); // Save user preferences. We need an Editor object to // make changes. All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Don't forget to commit your edits!!! editor.commit(); } } Files從這是第二種方法,可以在設備本身的存儲設備或者外接的存儲設備中創建用於保存數據的文件。同樣在默認的狀態下,文件是不能在不同的程序間共享。寫文件:調用Context.openFileOutput()方法根據指定的路徑和文件名來創建文件,這個方法會返回一個FileOutputStream對象。讀取文件:調用Context.openFileInput()方法通過制定的路徑和文件名來返回一個標準的Java FileInputStream對象。
    (注意:在其它程序中將無法應用相同的路徑和文件名來操作文件)另外編譯程序之前,在res/raw/tempFile中建立一個static文件,這樣可以在程序中通過Resources.openRawResource (R.raw.myDataFile)方法同樣返回一個InputStream對象,直接讀取文件內容。Databases在Android API中包括了應用SQLite databases的介面,每個程序所創建的資料庫都是私有的,換句話說,程序間無法相互訪問對方的資料庫。在程序中創建SQLiteDatabase對象,其中包含了大部分與database交互的方法,例如:讀取數據或者管理當前數據。可以應用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法來創建新的資料庫。對於SQLitedatabase而言,其強大和方便的功能為Android提供了強有力的存儲功能。特別是存儲一些復雜的數據結構,例如:Android特別為通訊錄創建了特有的數據類型,其中包含了非常多的子集而且涵蓋了大部分的數據類型 「First Name」 「Last Name」 「PhoneNumber」和「Photo」等。Android可以通過Sqlite3 database tool來查看指定資料庫中表的內容,直接運行SQL命令來快速便捷的直接操作SQLite database。

熱點內容
我的世界伺服器pe小 發布:2022-08-18 01:29:50 瀏覽:408
國家重大資料庫 發布:2022-08-18 01:28:32 瀏覽:522
二維碼信息存儲 發布:2022-08-18 01:25:36 瀏覽:619
寫加密狗軟體 發布:2022-08-18 01:24:05 瀏覽:203
sstap用什麼伺服器 發布:2022-08-18 01:23:55 瀏覽:595
c語言中註解 發布:2022-08-18 01:22:11 瀏覽:50
g10柴油版選哪個配置 發布:2022-08-18 01:21:14 瀏覽:104
c語言取地址符 發布:2022-08-18 01:17:43 瀏覽:389
linuxroot密碼忘記 發布:2022-08-18 01:16:14 瀏覽:38
ipad應用商店更新密碼是什麼 發布:2022-08-18 01:15:58 瀏覽:533