sd카드 작업 1
package com.example.helloandroid;
import android.Manifest;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import java.io.FileInputStream;
import java.io.IOException;
@SuppressWarnings("deprecation")
public class MainActivity extends AppCompatActivity {
Button btnRead;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("sd파일 읽기");
//final선언은 함수 내에서
final EditText edtSD;
btnRead = (Button) findViewById(R.id.btnRead);
edtSD = (EditText) findViewById(R.id.edtSD);
ActivityCompat.requestPermissions(this, new String[]{Manifest.
permission.WRITE_EXTERNAL_STORAGE}, MODE_PRIVATE);
//이 앱에게 파일 액세스 작업을 허용할지 묻는 창이 등장
btnRead.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
FileInputStream inFs = new FileInputStream(
"/storage/emulated/0/sd_test.txt"
//여기선 실제 sd카드 이름 넣을 것
);
byte[] txt = new byte[inFs.available()];
inFs.read(txt);
edtSD.setText(new String(txt));
inFs.close();
} catch (IOException e) {
}
}
});
}
}
//////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SD카드에서 파일 읽기"
android:id="@+id/btnRead"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edtSD"
android:lines="10"/>
<!--초기엔 버튼은 비활성화상태이다.-->
</LinearLayout>
//////////////////////////
(폴더 생성 삭제)
package com.example.helloandroid;
import android.Manifest;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import java.io.File;
@SuppressWarnings("deprecation")
public class MainActivity extends AppCompatActivity {
Button btnMkdir;
Button btnRmdir;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("sd파일 읽기");
//final선언은 함수 내에서
final EditText edtSD;
btnMkdir = (Button) findViewById(R.id.btnMkrdir);
btnRmdir = (Button) findViewById(R.id.btnRmrdir);
ActivityCompat.requestPermissions(this,
new String[]{Manifest.
permission.WRITE_EXTERNAL_STORAGE}, MODE_PRIVATE);
//이 앱에게 파일 액세스 작업을 허용할지 묻는 창이 등장
//sd카드의 절대경로를 돌려줌.
//이외의 getRootDirectory() : 시스템 폴더(디렉터리 반환)
//getDataDirectory(): 데이터 폴더 반환
final String strSDpath=
Environment.getExternalStorageDirectory().getAbsolutePath();
final File myDir=new File(strSDpath + "/mydir");
//sd카드 경로 아래에 mydir폴더를 생성하기 위해, File형 변수 선언
btnMkdir.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myDir.mkdir(); //폴더 생성
}
});
btnRmdir.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myDir.delete();
}
});
}
}
/////////////////////
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SD카드에 디렉터리 생성"
android:id="@+id/btnMkrdir"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SD카드에 디렉터리 삭제"
android:id="@+id/btnRmrdir"/>
////////////////////
<하위 폴더 파일 이름 나열>
package com.example.helloandroid;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;
@SuppressWarnings("deprecation")
public class MainActivity extends AppCompatActivity {
Button btnFileList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("sd파일 읽기");
//final선언은 함수 내에서
final EditText edtFileList;
btnFileList = (Button) findViewById(R.id.btnFileList);
edtFileList = (EditText) findViewById(R.id.edtFileList);
btnFileList.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
//안드로이드 시스템 폴더 경로를 돌려줌
String sysDir=Environment.getRootDirectory().getAbsolutePath();
//시스템 폴더의 파일/폴더 목록을 구해 sysFiles배열에 삽입
File[] sysFiles=(new File(sysDir).listFiles());
String strFname;
for(int i=0; i<sysFiles.length; i++) {
if(sysFiles[i].isDirectory() == true)
//현 파일이 폴더인지 확인, 폴더면 앞에 <폴더글자>
strFname="<폴더> "+sysFiles[i].toString();
else
strFname="<파일> "+sysFiles[i].toString();
edtFileList.setText(edtFileList.getText()+"\n"
+strFname);
}
}
});
}
}
//////////////////////////////////////
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="시스템 폴더의 폴더/파일 목록"
android:id="@+id/btnFileList"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edtFileList"/>