Android 寫檔案 複寫和追加 兩種方式
/ * 此方法為android程式寫入sd檔案檔案,用到了android-annotation的支援庫@ * * @param buffer 寫入檔案的內容 * @param folder 儲存檔案的資料夾名稱,如log;可為null,預設儲存在sd卡根目錄 * @param fileName 檔名稱,預設app_log.txt * @param append 是否追加寫入,true為追加寫入,false為重寫檔案 * @param autoLine 針對追加模式,true為增加時換行,false為增加時不換行 */ public synchronized static void writeFileToSDCard(@NonNull final byte[] buffer, @Nullable final String folder, @Nullable final String fileName, final boolean append, final boolean autoLine) { new Thread(new Runnable() { @Override public void run() { boolean sdCardExist = Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED); String folderPath = ""; if (sdCardExist) { //TextUtils為android自帶的幫助類 if (TextUtils.isEmpty(folder)) { //如果folder為空,則直接儲存在sd卡的根目錄 folderPath = Environment.getExternalStorageDirectory() + File.separator; } else { folderPath = Environment.getExternalStorageDirectory() + File.separator + folder + File.separator; } } else { return; } File fileDir = new File(folderPath); if (!fileDir.exists()) { if (!fileDir.mkdirs()) { return; } } File file; //判斷檔名是否為空 if (TextUtils.isEmpty(fileName)) { file = new File(folderPath + "app_log.txt"); } else { file = new File(folderPath + fileName); } RandomAccessFile raf = null; FileOutputStream out = null; try { if (append) { //如果為追加則在原來的基礎上繼續寫檔案 raf = new RandomAccessFile(file, "rw"); raf.seek(file.length()); raf.write(buffer); if (autoLine) { raf.write("\n".getBytes()); } } else { //重寫檔案,覆蓋掉原來的資料 out = new FileOutputStream(file); out.write(buffer); out.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (raf != null) { raf.close(); } if (out != null) { out.close(); } } catch (IOException e) { e.printStackTrace(); } } } }).start(); }
相關推薦
Android 寫檔案 複寫和追加 兩種方式
/ * 此方法為android程式寫入sd檔案檔案,用到了android-annotation的支援庫@ * * @param buffer 寫入檔案的內容 * @param folder 儲存檔案的資料夾名稱,如log
Android以JSONOject和GSON兩種方式解析json
length pre ray oid 字符 CA clas img name json文件如下: 將獲取到的json數據轉化為String形式 OkHttpClient client = new OkHttpClient(); R
關於NPOI匯出excel檔案(xls和xlsx兩種格式)提示格式不符的問題
這兩天在做匯出excel檔案的時候遇到這個問題 本來我匯出的格式是xlsx格式的,但是下載得到的檔案格式變成了xls, 一開始以為是返回的contenttype設定錯了 return File(ms, "application/vnd.ms-excel", "新車型匯入模板檔案.xls
spring之AOP操作(基於aspectJ實現)--配置檔案和註解兩種方式實現
AOP概念 1 aop:面向切面(方面)程式設計,擴充套件功能不修改原始碼實現 2 AOP採取橫向抽取機制,取代了傳統縱向繼承體系重複性程式碼 3 aop底層使用動態代理實現 (1)第一種情況,有介面情況,使用動態代理建立介面實現類代理物
Java常用面試題16 用IO和NIO兩種方式實現檔案拷貝
問:用IO和NIO兩種方式實現檔案拷貝 答: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;
Android 跑馬燈效果實現的兩種方式,解決和viewpager的衝突問題
第一篇部落格寫一點簡單的東西,多麼的簡單,就是一個跑馬燈,簡單的要死。所以話不多,寫起來。首先我們來講一個段子先緩和一下氣氛。大學的時候,隔壁宿舍老喜歡蹭我的wifi,煩死了,然後我把wifi名改成了:206有個帥哥是誰。密碼是我的名字,媽的看誰還蹭,結果。除了
Android如何區分debug和release兩種狀態
Android開發中識別debug還是release狀態還是很有用的,比方說列印日誌,有些日誌開發的時候需要,可是線上正式包不需要,這個時候如果知道了debug狀態就可以很方便的隱藏非必要日誌而又不影響開發,還有很多其他的作用。 一般,大家會用BuildConfig.DEB
Java檔案上傳的兩種方式(uploadify和Spring預設方式)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ include file="../jsp/include/taglibs.jsp"%> <!DOCTY
android 隱藏默認標題欄兩種方式
feature set body eat androi get featrue blog title 在setconnetView()之前加入 requestWindowFeature(Window.FEATURE_NO_TITLE);//第一種 getWindow().s
JDBC中Oracle的SID和ServiceName兩種方式的連接字符串格式
bottom none color bubuko div nbsp rac 字符串 padding SID格式: jdbc:oracle:thin:@<host>:<port>:<SID> 如: jdbc:oracle:thin:@19
9.10 路由控制之反向解析--【別名】html和views兩種方式實現
com 反向 技術分享 http mage login gin bsp 分享圖片 1. 在html裏反向解析 給路徑起別名,修改路徑時,不用每個地方都修改。 {% url ‘Log‘ %} : 就會去找別名為Log的URL,找到 "login/"後把"logi
julia開發環境安裝——VS code擴充套件和JuliaPro兩種方式
VS code擴充套件方式 首先,下載安裝julia1.0.0:我的上一篇文章 完成後,配置系統環境變數: 控制面板\所有控制面板項\系統–>高階系統設定 高階欄下點選系統變數~ 如圖: 在path下新增你的julia/bin路徑如(圖):G:\Julia-1.0.0
【Android】adb connect 手機的兩種方式
adb支援兩種連線Android系統的方式,USB方式及網路方式。一般android手機及android平板預設會設定為USB方式(直接插資料線的方式)。 下邊介紹兩種方式的切換方式。 1. 背景知識: android系統底層執行著一個服務(adbd),也就是在手機系統內
Map集合的遍歷方式以及TreeMap集合儲存自定義物件實現比較的Comparable和Comparator兩種方式
Map集合的特點 1、Map集合中儲存的都是鍵值對,鍵和值是一一對應的 2、一個對映不能包含重複的值 3、每個鍵最多隻能對映到一個值上 Map介面和Collection介面的不同 Map是雙列集合的根介面,Collection是單列集合的根介面 1、Map是雙列的(是雙列集合的根介
Redis詳解 - SpringBoot整合Redis,RedisTemplate和註解兩種方式的使用
本文主要講 Redis 的使用,如何與 SpringBoot 專案整合,如何使用註解方式和 RedisTemplate 方式實現快取。最後會給一個用 Redis 實現分散式鎖,用在秒殺系統中的案例。 更多 Redis 的實際運用場景請關注開源專案 coderiver 專案地址:github.com/cac
mysqldump和xtrabackup兩種方式進行非空庫複製搭建
mysqldump和xtrabackup兩種方式進行非空庫複製搭建 1、mysqldump非空庫複製搭建 2、xtrabackup非空庫複製搭建 mysqldump和xtrabackup兩種方式進行非空庫複製搭建 1、mysqldu
POI操作Excel詳解,HSSF和XSSF兩種方式
HSSF方式: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; impor
玩轉SpringCloud 三.斷路器(Hystrix)RestTemplate+Ribbon和Feign兩種方式
此文章基於: 三.斷路器(Hystrix) 在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以相互呼叫(RPC),在Spring Cloud可以用來呼叫。為了保證其高可用,單個服務通常會叢集部署。由於網路原因或者自身的原因,服務並不能保證100%可用,如果單個服務出現問
第一個django專案-通過命令列和pycharm兩種方式
以本機環境為例,ip地址為172.20.16.148,windows平臺,虛擬環境路徑為d:\VirtualEnv,專案存放位置為d:\DjangoProject 命令列方式 1.進入虛擬環境建立專案django-admin startproject projectname 專案的存
VirtualBox 設定虛擬機器網路 以及內建的linux系統 網路靜態ip的配置 包含有線和無線兩種方式
我們討論一下如何在Linux中設定網路連線,配置網路連線最基本的涉及到IP地址、掩碼、閘道器和DNS設定,一般情況下系統設定好以上資訊後就可以接入網路了,這裡介紹了Linux在文字模式下通過修改配置檔案來配置基本網路連線,涉及到更多的網路配置方法請參閱相關的書籍,本文只供Linu