파일 속성, 읽기, 쓰기, 생성, 복사하기
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" /> |
[출처 : http://arabiannight.tistory.com/47]
TestFile.zip