ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파일 입출력과 일기장, 그래픽
    안드로이드 스튜디오 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);
            }
        }
    }

    댓글

Designed by Tistory.