Android 讀寫檔案整理
阿新 • • 發佈:2019-01-22
很簡單的整理 ,最近實在心力憔悴,貼上整理程式碼:
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; } }