동방프로젝트

sd카드 작업 1

두원공대88학번뚜뚜 2020. 8. 16. 23:28

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"/>