이미지 파일을 SD 카드에다가 받고 싶어서.
String ext = Environment.getExternalStorageState();
if(ext.equals(Environment.MEDIA_MOUNTED)){
mSdPath = Environment.getExternalStorageDirectory().getAbsolutePath();
Log.d("UDP", "SDCard-Connect");
}else{
mSdPath = Environment.MEDIA_UNMOUNTED;
Log.d("UDP", "SDCard-Un Connect");
}
이렇게 해서 SD 카드의 경로를 가져왔습니다.
그뒤 ,
ds = new DatagramSocket(port);
dp = new DatagramPacket(buffer, buffer.length,serveraddr,port);
소켓과 패킷을 생성하고,
밑에서 파일 저장하려고 하는데, 계속 저장이 안되네요.ㅠ
fname = new String(dp.getData()).trim();
fsize = Integer.parseInt(fname.substring(fname.indexOf(":")+1));
File file = new File(mSdPath+"/"+fname);
fo = new FileOutputStream(file);
for (int i=0; i<fsize; i+=BUFSIZE) {
buffer = new byte[BUFSIZE];
dp = new DatagramPacket(buffer, buffer.length,serveraddr,port);
ds.receive(dp);
Log.d("UDP", "Receive Packet");
fo.write(dp.getData());
if(i%(BUFSIZE*80)==0)
System.out.println();
System.out.print(".");
}
int extra = fsize%BUFSIZE;
buffer = new byte[extra];
dp = new DatagramPacket(buffer, buffer.length,serveraddr,port);
ds.receive(dp);
fo.write(dp.getData());
fo.close();
로그 찍어봐도, SDCard-Connect 도 떳다 안떳다 하고, 미치겟네요.
이미지 SD 카드에 소켓통신에서 저장하려면, 어떻게 수정해야 될까요?




fsize = Integer.parseInt(fname.substring(fname.indexOf(":")+1));
위에 줄이 있더군요.. fname이 파일이름인것 같은데 여기에 특수문자 : 이 있군요.
파일 이름에 특수문자가 들어가면 파일 생성이 안됩니다.
혹시 위에 코드에서 서브스트링을 했으니까 그 부분이 짤렸다고 생각하시면 안됩니다.
그리고 외장메모리에 파일 저장하는 퍼미션은 주셨는지 체크해 보세요.