728x90
FileChannel을 이용한 안드로이드 파일 복사
화면에서의 버튼을 누르면
지정한 폴더의 파일 -> 다른 폴더로 복사되는 코드
test.dat 이라는 파일을
TestFolder 파일이 없으면 새로 만든 후, 폴더에 복사하는 코드.
public class fileCopy extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.activity_main);
final Button mButton = (Button) this.findViewById(R.id.button_copy);
final String strNewFolder = "TestFolder" + File.separator;
final String strFileName = "test.dat";
final String strCurPath = getFilesDir().getPath() + File.separator;
final String strNewPath = getFilesDir().getPath() + File.separator + strNewFolder;
final File fOldFileDir = new File (strCurPath);
final File fNewFileDir = new File(strCurPath + strNewFolder);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!fNewFileDir.exists()){
fNewFileDir.mkdir();
}
else{
String from = strCurPath + strFileName;
String to = strNewPath + strFileName;
try{
filecopy(from, to);
Toast.makeText(fileCopy.this, "Copy Sueccess", Toast.LENGTH_SHORT).show();
}
catch(FileNotFoundException e){
Toast.makeText(fileCopy.this, strFileName + "File not exist", Toast.LENGTH_SHORT).show();
}
catch(Exception e){
e.printStackTrace();
}
}
}
});
}
private static void filecopy(String from, String to) throws Exception{
FileInputStream fis = null;
FileOutputStream fos = null;
FileChannel in = null;
FileChannel out = null;
try{
fis = new FileInputStream(from);
fos = new FileOutputStream(to);
in = fis.getChannel();
out = fos.getChannel();
in.transferTo(0, in.size(), out);
}
catch(Exception e){
e.printStackTrace();
}
finally {
if(out != null)
out.close();
if(in != null)
in.close();
if(fis != null)
fis.close();
if(fos != null)
fos.close();
}
}
}
728x90
반응형
'Java > Android' 카테고리의 다른 글
39_안드로이드 스튜디오 오류 (0) | 2016.10.17 |
---|---|
37_getString() (0) | 2016.10.13 |
36_내 번호 알아내기 (0) | 2016.10.12 |
35_안드로이드 스튜디오 한글 깨짐 (0) | 2016.10.07 |
1_[ Gson ] (0) | 2016.08.19 |