package arabiannight.tistory.com; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.util.Log; public class TestFileActivity extends Activity { public static final String TAG = "TestFileActivity"; public static final String STRSAVEPATH = Environment. getExternalStorageDirectory()+"/testfolder/"; public static final String STRSAVEPATH2 = Environment. getExternalStorageDirectory()+"/testfolder2/"; public static final String SAVEFILEPATH = "MyFile.txt"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //폴더 생성 File dir = makeDirectory(STRSAVEPATH); //파일 생성 File file = makeFile(dir, (STRSAVEPATH+SAVEFILEPATH)); //절대 경로 Log.i(TAG, ""+getAbsolutePath(dir)); Log.i(TAG, ""+getAbsolutePath(file)); //파일 쓰기 String content = new String("가나다라마바다사아자차카타파하"); writeFile(file , content.getBytes()); //파일 읽기 readFile(file); //파일 복사 makeDirectory(STRSAVEPATH2); //복사할 폴더 copyFile(file , (STRSAVEPATH2+SAVEFILEPATH)); //디렉토리 내용 얻어 오기 String[] list = getList(dir); for(String s : list){ Log.d(TAG, s); } } /** * 디렉토리 생성 * @return dir */ private File makeDirectory(String dir_path){ File dir = new File(dir_path); if (!dir.exists()) { dir.mkdirs(); Log.i( TAG , "!dir.exists" ); }else{ Log.i( TAG , "dir.exists" ); } return dir; } /** * 파일 생성 * @param dir * @return file */ private File makeFile(File dir , String file_path){ File file = null; boolean isSuccess = false; if(dir.isDirectory()){ file = new File(file_path); if(file!=null&&!file.exists()){ Log.i( TAG , "!file.exists" ); try { isSuccess = file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } finally{ Log.i(TAG, "파일생성 여부 = " + isSuccess); } }else{ Log.i( TAG , "file.exists" ); } } return file; } /** * (dir/file) 절대 경로 얻어오기 * @param file * @return String */ private String getAbsolutePath(File file){ return ""+file.getAbsolutePath(); } /** * (dir/file) 삭제 하기 * @param file */ private boolean deleteFile(File file){ boolean result; if(file!=null&&file.exists()){ file.delete(); result = true; }else{ result = false; } return result; } /** * 파일여부 체크 하기 * @param file * @return */ private boolean isFile(File file){ boolean result; if(file!=null&&file.exists()&&file.isFile()){ result=true; }else{ result=false; } return result; } /** * 디렉토리 여부 체크 하기 * @param dir * @return */ private boolean isDirectory(File dir){ boolean result; if(dir!=null&&dir.isDirectory()){ result=true; }else{ result=false; } return result; } /** * 파일 존재 여부 확인 하기 * @param file * @return */ private boolean isFileExist(File file){ boolean result; if(file!=null&&file.exists()){ result=true; }else{ result=false; } return result; } /** * 파일 이름 바꾸기 * @param file */ private boolean reNameFile(File file , File new_name){ boolean result; if(file!=null&&file.exists()&&file.renameTo(new_name)){ result=true; }else{ result=false; } return result; } /** * 디렉토리에 안에 내용을 보여 준다. * @param file * @return */ private String[] getList(File dir){ if(dir!=null&&dir.exists()) return dir.list(); return null; } /** * 파일에 내용 쓰기 * @param file * @param file_content * @return */ private boolean writeFile(File file , byte[] file_content){ boolean result; FileOutputStream fos; if(file!=null&&file.exists()&&file_content!=null){ try { fos = new FileOutputStream(file); try { fos.write(file_content); fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } result = true; }else{ result = false; } return result; } /** * 파일 읽어 오기 * @param file */ private void readFile(File file){ int readcount=0; if(file!=null&&file.exists()){ try { FileInputStream fis = new FileInputStream(file); readcount = (int)file.length(); byte[] buffer = new byte[readcount]; fis.read(buffer); for(int i=0 ; i<file.length();i++){ Log.d(TAG, ""+buffer[i]); } fis.close(); } catch (Exception e) { e.printStackTrace(); } } } /** * 파일 복사 * @param file * @param save_file * @return */ private boolean copyFile(File file , String save_file){ boolean result; if(file!=null&&file.exists()){ try { FileInputStream fis = new FileInputStream(file); FileOutputStream newfos = new FileOutputStream(save_file); int readcount=0; byte[] buffer = new byte[1024]; while((readcount = fis.read(buffer,0,1024))!= -1){ newfos.write(buffer,0,readcount); } newfos.close(); fis.close(); } catch (Exception e) { e.printStackTrace(); } result = true; }else{ result = false; } return result; } }
파일 생성 및 삭제를 위해서는 AndroidManifest.xml 파일에 아래의 퍼미션을 꼭 추가해야 합니다.
퍼미션 삽입 위치는
<manifest> <퍼미션삽입위치> <application> </application> <퍼미션삽입위치> </manifest> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />