-
파일 입출력과 일기장, 그래픽안드로이드 스튜디오 2021. 12. 31. 03:43
1) 파일 입출력
-1) 에디트텍스트 없는 경우
btnWrite.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { FileOutputStream outFs = openFileOutput("file.txt", Context.MODE_PRIVATE); // Context 클래스의 openFileOutput() 메소드를 사용하면 FileOutputStream을 반환한다. // write()메소드 사용가능, 반대로 FileIntputStream와 openFileInput()일 때 read() 사용 String str = "쿡북 안드로이드"; outFs.write(str.getBytes()); outFs.close(); Toast.makeText(getApplicationContext(), "file.txt가 생성됨", Toast.LENGTH_SHORT).show(); } catch (IOException e) { } } }); btnRead.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { FileInputStream inFs = openFileInput("file.txt"); byte[] txt = new byte[30]; inFs.read(txt); String str = new String(txt); Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show(); inFs.close(); } catch (IOException e) { Toast.makeText(getApplicationContext(), "파일 없음" , Toast.LENGTH_SHORT).show(); } } });
-2) 에디트텍스트 있는 경우
btnWrite.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { FileOutputStream outFs = openFileOutput("file1.txt", Context.MODE_PRIVATE); // Context 클래스의 openFileOutput() 메소드를 사용하면 FileOutputStream을 반환한다. // write()메소드 사용가능, 반대로 FileIntputStream와 openFileInput()일 때 read() 사용 String str = edittext.getText().toString(); outFs.write(str.getBytes()); outFs.close(); Toast.makeText(getApplicationContext(), "file1.txt가 생성됨", Toast.LENGTH_SHORT).show(); } catch (IOException e) { } } }); btnRead.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { FileInputStream inFs = openFileInput("file1.txt"); byte[] txt = new byte[30]; inFs.read(txt); String str = new String(txt); Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show(); inFs.close(); } catch (IOException e) { Toast.makeText(getApplicationContext(), "파일 없음" , Toast.LENGTH_SHORT).show(); } } });
2) raw 폴더 파일 처리 - /res/raw에 있는 txt 파일은 '읽기 전용'으로만 가능하고 쓰기는 할 수 없음
: PC에서 텍스트 파일을 저장할 때, 인코딩을 ‘UTF-8’로 해야 안드로이드에서 한글이 깨지지 않는다.
메모장에서는 [파일]-[다른 이름으로 저장]을 선택한 후 맨 아래의 “인코딩”을 ‘UTF-8’로 선택해서 저장하면 된다.
btnRead.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { InputStream inputS = getResources().openRawResource(R.raw.raw_test); byte[] txt = new byte[inputS.available()]; // 입력 스트림에서 읽을 수 있는 바이트 수를 반환 inputS.read(txt); edtRaw.setText(new String(txt)); inputS.close(); } catch (IOException e) { } } });
3) 그래픽 처리의 기본 - 도형 그리기
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyGraphicView(this)); } private static class MyGraphicView extends View { public MyGraphicView(Context context) { super(context); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); // paint.setAntiAlias(true); // 도형의 끝을 부드럽게 처리 paint.setColor(Color.BLACK); paint.setStrokeWidth(10); canvas.drawRect(70, 30, 570, 90, paint); paint.setColor(Color.BLACK); RectF rect1 = new RectF(40, 120, 600, 180); canvas.drawRoundRect(rect1, 30, 30, paint); paint.setColor(Color.BLACK); canvas.drawOval(120, 210, 500, 360, paint); paint.setColor(Color.BLACK); canvas.drawArc(120, 280, 360,530, 40, 110, true, paint); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.FILL); Rect rect2 = new Rect(120, 550, 120+300, 550+300); canvas.drawRect(rect2, paint); paint.setColor(Color.argb(0x88, 0xff, 0x00, 0x00)); paint.setStyle(Paint.Style.FILL); Rect rect3 = new Rect(200, 650, 200+300, 650+300); canvas.drawRect(rect3, paint); } } }
'안드로이드 스튜디오' 카테고리의 다른 글
[에러] The minCompileSdk (31) specified in a dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) is greater than this module's compileSdkVersion (android-30). (0) 2021.12.31 이미지, 포토샵, 스케치 (0) 2021.12.31 옵션메뉴, 컨텍스트 메뉴, 대화상자 (0) 2021.12.31 뷰 컨테이너 (0) 2021.12.31 날짜 / 시간 예약 구현 (0) 2021.12.31