File makedir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/EYEONE","text.txt"); Log.e("-->","path="+makedir.toString()); if(makedir.mkdir()){ Log.e("-->", "OK"); }else{ Log.e("-->", "NO"); } try { FileOutputStream fos = new FileOutputStream(makedir); Log.e("-->", makedir.toString()); fos.write("testString.txt".getBytes()); fos.close(); } catch (FileNotFoundException e) { Log.e("-->", "FileNotex"); e.printStackTrace(); } catch (IOException e) { Log.e("-->", "Ioex"); e.printStackTrace(); }
권한은 android.permission.WRITE_EXTERNAL_STORAGE 준상태입니다 .
그냥 SDCARD 에는 생성이 되는데 폴더를 만들려니 문제가 되네요 .
mkdir로그는 이렇게 나오는데 .
03-20 21:42:25.796: ERROR/-->(16211): path=/sdcard/EYEONE/text.txt
FileOutputStream 이부분에서 FileNotFoundException 이 납니다 .
로그는
03-20 21:42:24.202: WARN/UsageStats(15502): Failed to persist new stats
03-20 21:42:25.803: WARN/System.err(16211): java.io.FileNotFoundException: /sdcard/EYEONE/text.txt
03-20 21:42:25.803: WARN/System.err(16211): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
03-20 21:42:25.803: WARN/System.err(16211): at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
03-20 21:42:25.811: WARN/System.err(16211): at java.io.FileOutputStream.<init>(FileOutputStream.java:69)
03-20 21:42:25.811: WARN/System.err(16211): at cont.eye.EYEONE$1.onClick(EYEONE.java:44)
구요 파일을 못찾는다는 이야기인거 같은데 ..
File makedir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/EYEONE","text.txt");
하면 파일은 이미 생성된게 아닌가요 ?
try { if(makedir.createNewFile()){ Log.e("-->", "CRFILEOK"); }else{ Log.e("-->", "CRFILENO"); } if(makedir.mkdir()){ Log.e("-->", "mkOK"); }else{ Log.e("-->", "mkNO"); } } catch (IOException e1) { e1.printStackTrace(); Log.e("-->", "IOERRER"); }
를 추가해 주었지만 다른 익셉션이 추가 됏네요 ㅠ_ㅠ
03-21 00:12:14.776: WARN/UsageStats(15502): Failed to persist new stats
03-21 00:12:19.050: WARN/System.err(18140): java.io.IOException: Parent directory of file does not exist: /sdcard/EYEONE/text.txt
03-21 00:12:19.050: WARN/System.err(18140): at java.io.File.createNewFile(File.java:1263)
03-21 00:12:19.050: WARN/System.err(18140): at cont.eye.EYEONE$1.onClick(EYEONE.java:39)
03-21 00:12:19.050: WARN/System.err(18140): at android.view.View.performClick(View.java:2370)
03-21 00:12:19.057: WARN/System.err(18140): at android.view.View.onTouchEvent(View.java:4185)
03-21 00:12:19.057: WARN/System.err(18140): at android.widget.TextView.onTouchEvent(TextView.java:6568)
03-21 00:12:19.057: WARN/System.err(18140): at android.view.View.dispatchTouchEvent(View.java:3715)
03-21 00:12:19.057: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.057: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.057: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.057: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.057: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.057: WARN/System.err(18140): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1700)
03-21 00:12:19.057: WARN/System.err(18140): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1111)
03-21 00:12:19.057: WARN/System.err(18140): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
03-21 00:12:19.057: WARN/System.err(18140): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1684)
03-21 00:12:19.065: WARN/System.err(18140): at android.view.ViewRoot.handleMessage(ViewRoot.java:1701)
03-21 00:12:19.065: WARN/System.err(18140): at android.os.Handler.dispatchMessage(Handler.java:99)
03-21 00:12:19.065: WARN/System.err(18140): at android.os.Looper.loop(Looper.java:123)
03-21 00:12:19.065: WARN/System.err(18140): at android.app.ActivityThread.main(ActivityThread.java:4353)
03-21 00:12:19.065: WARN/System.err(18140): at java.lang.reflect.Method.invokeNative(Native Method)
03-21 00:12:19.065: WARN/System.err(18140): at java.lang.reflect.Method.invoke(Method.java:521)
03-21 00:12:19.065: WARN/System.err(18140): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-21 00:12:19.065: WARN/System.err(18140): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-21 00:12:19.065: WARN/System.err(18140): at dalvik.system.NativeStart.main(Native Method)
03-21 00:12:19.073: WARN/System.err(18140): java.io.FileNotFoundException: /sdcard/EYEONE/text.txt
03-21 00:12:19.073: WARN/System.err(18140): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
03-21 00:12:19.073: WARN/System.err(18140): at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
03-21 00:12:19.073: WARN/System.err(18140): at java.io.FileOutputStream.<init>(FileOutputStream.java:69)
03-21 00:12:19.073: WARN/System.err(18140): at cont.eye.EYEONE$1.onClick(EYEONE.java:57)
03-21 00:12:19.073: WARN/System.err(18140): at android.view.View.performClick(View.java:2370)
03-21 00:12:19.073: WARN/System.err(18140): at android.view.View.onTouchEvent(View.java:4185)
03-21 00:12:19.073: WARN/System.err(18140): at android.widget.TextView.onTouchEvent(TextView.java:6568)
03-21 00:12:19.073: WARN/System.err(18140): at android.view.View.dispatchTouchEvent(View.java:3715)
03-21 00:12:19.081: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.081: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.081: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.081: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.081: WARN/System.err(18140): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883)
03-21 00:12:19.081: WARN/System.err(18140): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1700)
03-21 00:12:19.081: WARN/System.err(18140): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1111)
03-21 00:12:19.081: WARN/System.err(18140): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
03-21 00:12:19.081: WARN/System.err(18140): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1684)
03-21 00:12:19.081: WARN/System.err(18140): at android.view.ViewRoot.handleMessage(ViewRoot.java:1701)
03-21 00:12:19.081: WARN/System.err(18140): at android.os.Handler.dispatchMessage(Handler.java:99)
03-21 00:12:19.089: WARN/System.err(18140): at android.os.Looper.loop(Looper.java:123)
03-21 00:12:19.089: WARN/System.err(18140): at android.app.ActivityThread.main(ActivityThread.java:4353)
03-21 00:12:19.089: WARN/System.err(18140): at java.lang.reflect.Method.invokeNative(Native Method)
03-21 00:12:19.089: WARN/System.err(18140): at java.lang.reflect.Method.invoke(Method.java:521)
03-21 00:12:19.089: WARN/System.err(18140): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-21 00:12:19.089: WARN/System.err(18140): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-21 00:12:19.089: WARN/System.err(18140): at dalvik.system.NativeStart.main(Native Method)
후자인 경우
File dir = new
File(Environment.getExternalStorageDirectory().getAbsolutePath() , "
EYEONE") ;
dir.mkdirs() ;
File f = new File(dir , "text.txt") ;
같은 식으로 디렉토리를 먼저 만든 다음 그 안에 파일을 생성해야 합니다.
mkdir.createNewFile();
} catch (IOException e) {
throw new IllegalStateException("Cannot create file: "
+ makedir.toString());
}
이런 식으로 생성해주는 명령어가 필요합니다.