java.io.RandomAcessFile

RandomAcessFile는 Object 클래스의 한단계 하위 클래스로 파일의 읽기, 쓰기가 가능하다.

파일시스템에 바이트로 저장된 큰 배열에 접근하는 방법으로 순차적으로 접근하는 방법이 아니라 파일 포인터를 이용해 임의의 위치(사용자가 선택한 인덱스)를 바로 읽을 수 있는 클래스이다.


Constructor:생성자

1. RandomAccessFile(File file, String mode)

2. RandomAccessFile(String name, String mode)

* mode

"r" -> 읽기전용

"rw" -> 읽고 쓰기 가능

"rws" ->

 실행환경

 Desktop

 조립식

 CPU

 Intel(R) Core(TM) i7-3770 3.50GHz

 Memory

 4 GB

 OS

 Window 7 Professional 32bit

 Java

 1.7.0_51

 Android

 SDK : 4.4.2 (KitKat) / 테스트기기 : Galaxy S3 4.3(Jelly Bean)

 WebServer

 Apache Tomcat 7.0

 DB

 MySQL 5.6.15


문제점

안드로이드에서 파일 출력을 하려는데 openFileOutput에서 에러가 발생했다.

"The method openFileOutput(String, int) is undefined for the type LocationData" 라고 정의되어 있지 않다고 한다.


해결방안

openFileOutput()는 Context 클래스에 있는 메서드인데 파일출력을 하는 클래스를 따로 만들었을땐 문제가 발생한다.

그러므로, 파일 출력 클래스에서 Context를 선언해주어야 한다.

(혹시 몰라 MainActivity에 있는 Context를 그대로 가져왔습니다. 문제 없다면 댓글 부탁바랍니다.)


MainActivity.java

...
Context mContext;
mContext =  getApplicationContext();
data.textFileSave(mContext);
...

LocationData.java(파일출력 클래스)

...
public void textFileSave(Context cont) {
FileOutputStream fos = null;
	try {
		// 기본 파일 저장
		fos = cont.openFileOutput("test.txt", Context.MODE_APPEND);
		for.write(toString().getBytes());
		...
	} catch (Exception e) {}
}
...


메인화면에서 로그인버튼을 image로 두었을 경우, image는 submit을 가지고 있다.

<input type="image" src="../login.png" onClick="login(e);">
// type="submit"과 같다.

이 경우 login() 함수에서 submit을 줄 경우 중복된 결과가 나온다. 

return false; 를 사용하거나 img태그로 사용하는 방법으로 아래와 같다.

<!--  <input type="image"> submit 막는 방법  -->

<input type="image" src="../login.png" onClick="login(e); return false;">
// return false; 를 넣는 방법.

<img src="../login.png" onClick="login(e);">
// 버튼을 이미지태그로 사용하는 방법.


+ Recent posts