android: FileOutputStream Doesn't work

1k Views Asked by At

I try to make TCP-Sock program, and this is simple file recv program. and now, i get some problem.

i think my client program's FileOutputStream class doesn't work.

below code is what i've made.

package kr.ac.cbnu.incping.tcp_cloud;

public class DownActivity extends Activity {
public static int contentNum;
public static String body=new String();
public static String fName=new String();
public static int fSize;



public static synchronized String getFilePath(String userID, String fName)
{
    String sdcard = Environment.getExternalStorageState();
    File file = null;

    if ( !sdcard.equals(Environment.MEDIA_MOUNTED))
    {
        // SDcard isn't mount
        file = Environment.getRootDirectory();
    }
    else
    {
        // SDcard is mount
        file = Environment.getExternalStorageDirectory();
    }


    String dir = file.getAbsolutePath() + String.format("/tcp_cloud/%s",userID);
    String path = file.getAbsolutePath() + String.format("/tcp_cloud/%s/%s",userID,fName);

    file = new File(dir);
    if ( !file.exists() )
    {
        // Make directory if dir doesn't exist
        file.mkdirs();
    }

    // return File Path;
    return path;
}

public void connect()
{
    try{

        Socket socket=new Socket(MainActivity.servIP, MainActivity.servPort);

        DataOutputStream dos;
        DataInputStream dis;

        dis=new DataInputStream(socket.getInputStream());
        dos=new DataOutputStream(socket.getOutputStream());

        byte[]flag=new byte[3];
        byte[]num=new byte[1];
        byte[]uID=new byte[17];

        String path=new String();
        path=getFilePath(LoginActivity.usrName,fName);
        File f=new File(path);




        flag="05".getBytes("EUC_KR");
        num=Integer.toHexString(contentNum).getBytes("EUC_KR");
        uID=LoginActivity.usrName.getBytes("EUC_KR");


        dos.write(flag);
        dos.flush();
        dos.write(num);
        dos.flush();
        dos.write(uID);
        dos.flush();


        FileOutputStream fos=new FileOutputStream(f);
        Toast.makeText(getApplicationContext(),path,Toast.LENGTH_LONG).show();
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        dos=new DataOutputStream(bos);


        int len;
        int size = 512;
        byte[] data = new byte[size];


        while ((len = dis.read(data,0,size))!=-1) 
        {
            dos.write(data);
        }
        dos.flush();
        Toast.makeText(getApplicationContext(),path+" saved",Toast.LENGTH_LONG).show();
        dos.close();
        bos.close();
        fos.close();





        dos.close();
        dis.close();
        socket.close();

    }catch (Exception e){
        e.printStackTrace();
    }
}




protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_down);
    String title=new String();

    if(contentNum==0)
        title=LoginActivity.title1;
    else if(contentNum==1)
        title=LoginActivity.title2;
    else if(contentNum==2)
        title=LoginActivity.title3;
    else if(contentNum==3)
        title=LoginActivity.title4;
    else if(contentNum==4)
        title=LoginActivity.title5;

    TextView bodytit=(TextView) findViewById(R.id.bodyTitle);
    TextView bodydat=(TextView) findViewById(R.id.bodyBody);
    Button filedat=(Button) findViewById(R.id.filename);

    bodytit.setText(title);
    bodydat.setText(body);
    filedat.setText(fName+"(size: "+fSize+")");

    filedat.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            connect();

        }
    });



}}

and this code is troubled code

FileOutputStream fos=new FileOutputStream(f); Toast.makeText(getApplicationContext(),path,Toast.LENGTH_LONG).show(); BufferedOutputStream bos=new BufferedOutputStream(fos); dos=new DataOutputStream(bos);

toast message is just prob message. when placed toast above of the FOS, toast working well. but toast isn't working in that position

i can't solve this problem. please, somebody help me..T.T

*i'm not english language area's person. so my english isn't nice sentence. i'm sorry about that;)

1

There are 1 best solutions below

0
On

In my case FileOutputStream and OutputStreamWriter is not works.

So I was changed File classes to this.

   FileWriter fileOut = new FileWriter(fileFullPath, false);
        String jsonString = new Gson().toJson(json);
        fileOut.write(jsonString);
        fileOut.close();