1. 程式人生 > >Android 讀寫檔案整理

Android 讀寫檔案整理

很簡單的整理 ,最近實在心力憔悴,貼上整理程式碼:

package xiaolei.sun.readwrite;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.RandomAccessFile;

public class MainActivity extends AppCompatActivity {

    private TextView textview;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textview = (TextView) findViewById(R.id.textview);


        imageView =
                (ImageView) findViewById(R.id.iv_imageview);
    }


    public void btn_imagefuc(View view) {


        String path = null;
        try {
            path = Environment.getExternalStorageDirectory().getCanonicalPath() + "/a.png";
           //位元組流
            FileInputStream fs = new FileInputStream(path);
           //位元組緩衝流
            BufferedInputStream bufferedInputStream = new BufferedInputStream(fs); //bufferedInputStream作為一個流的緩衝池,提高流的寫入效能呢


            //在載入前可計算影象大小,進行圖片壓縮

            // 將流轉換為bitmap
            Bitmap bitmap = BitmapFactory.decodeStream(bufferedInputStream);
            imageView.setImageBitmap(bitmap);

            bufferedInputStream.close();
            fs.close();
            bitmap = null;
        } catch (IOException e) {
            e.printStackTrace();
        }


        Toast.makeText(MainActivity.this, "123", Toast.LENGTH_SHORT).show();

    }


    public void getSDfuc(View view) {
        boolean equals = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
        File externalStorageDirectory = Environment.getExternalStorageDirectory();
        Toast.makeText(MainActivity.this, externalStorageDirectory + "", Toast.LENGTH_SHORT).show();


    }

    public void SDwritefuc(View view) {


        writetoSDcard("SD card example !!!");

        Toast.makeText(MainActivity.this, "SD write !!!", Toast.LENGTH_SHORT).show();
    }

    /**
     * 將資料寫入SD卡
     *
     * @param content
     */
    public void writetoSDcard(String content) {
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))// 判斷SD卡是否進行掛載
        {
            File externalStorageDirectory = Environment.getExternalStorageDirectory();// 獲取SD卡路徑


            // 建立一個檔案,並使用RandomAccessFile進行檔案寫入
            try {
                File file = new File(externalStorageDirectory.getCanonicalPath() + "/text.txt");

                RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
                randomAccessFile.seek(file.length());
                randomAccessFile.write(content.getBytes());//資料寫入
                randomAccessFile.close();

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

    }

    /**
     * 讀取SD卡中的內容
     *
     * @return
     */
    public String ReadFromSDcard() {


        File externalStorageDirectory = Environment.getExternalStorageDirectory(); //獲取SD卡路徑
        try {
            //獲取讀取流
            FileInputStream fileInputStream = new FileInputStream(externalStorageDirectory.getCanonicalPath() + "/text.txt");


            //將讀取流轉換為bufferReader
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));


            StringBuilder stringBuilder = new StringBuilder("");
            String line = null;
            //使用bufferReader將stringBuilder拼接起來
            while ((line = bufferedReader.readLine()) != null) {
                stringBuilder.append(line);
            }

            bufferedReader.close();
            return stringBuilder.toString();

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

        return null;
    }

    public void SDreadfuc(View view) {
        textview.setText(ReadFromSDcard());
        ;
        Toast.makeText(MainActivity.this, "SD read !!!", Toast.LENGTH_SHORT).show();
    }


    public void getdirfuc(View view) {

        File dir = getDir("dirtext.txt", MODE_APPEND);//  在應用程式下獲取路徑
        File filesDir = getFilesDir();
        String[] strings = fileList();
        deleteFile("text.txt");
        Toast.makeText(MainActivity.this, strings[0], Toast.LENGTH_SHORT).show();
    }

    public void writefuc(View view) {

        write("this is a text file!!!");
        Toast.makeText(MainActivity.this, "write", Toast.LENGTH_SHORT).show();
    }

    public void readfuc(View view) {
        textview.setText(read());
        Toast.makeText(MainActivity.this, "read", Toast.LENGTH_SHORT).show();
    }

    public void write(String content) {
        try {
            FileOutputStream fileOutputStream = openFileOutput("text.txt", MODE_APPEND);
            PrintStream printStream = new PrintStream(fileOutputStream);
            printStream.println(content);
            printStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public String read() {
        try {
            FileInputStream fileInputStream = openFileInput("text.txt");
            byte[] bytes = new byte[1024];
            int hasread = 0;
            StringBuilder stringBuilder = new StringBuilder("");
            while ((hasread = fileInputStream.read(bytes)) > 0) {
                stringBuilder.append(new String(bytes, 0, hasread));
            }
            fileInputStream.close();
            return stringBuilder.toString();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

}