当前位置:  开发笔记 > 编程语言 > 正文

将文件写入SD卡

如何解决《将文件写入SD卡》经验,为你挑选了2个好方法。

我正在尝试从Http帖子回复到SD卡上的文件写一个文件.一切正常,直到检索到数据的字节数组.

我已尝试WRITE_EXTERNAL_STORAGE在清单中设置权限,并尝试了我在网上找到的许多不同的教程组合.

我所能找到的只是使用活动的openFileOutput("",MODE_WORLD_READABLE)方法,但我的应用程序如何通过使用线程来写文件.具体来说,当一个文件必须被写入时,从另一个线程调用一个线程,所以即使我尝试了它,给一个活动对象也不起作用.

该应用程序已经走了很长的路,我无法改变应用程序当前的编写方式.

拜托,有人帮帮我吗?


代码:

File file = new File(bgdmanip.savLocation);
FileOutputStream filecon = null;
filecon = new FileOutputStream(file);

byte[] myByte;
myByte = Base64Coder.decode(seReply);

bos.write(myByte);
filecon.write(myByte);
myvals = x * 11024;

bgdmanip.savLocation保存整个文件路径.seReply是来自HttpPost响应的字符串回复.第二组代码循环参考x.文件已创建但仍为0字节.



1> Pir Fahim Sh..:
//------------------------------WRITING DATA TO THE FILE ---------------------------------      

btnWriteSDFile.setOnClickListener(new OnClickListener() 
    {
    public void onClick(View v)
    {       

        try {
            File myFile = new File("/sdcard/mysdfile.txt");
            myFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter =new OutputStreamWriter(fOut);
            myOutWriter.append(txtData.getText());
            myOutWriter.close();
            fOut.close();
            Toast.makeText(v.getContext(),"Done writing SD 'mysdfile.txt'", Toast.LENGTH_SHORT).show();
            txtData.setText("");
        } 
        catch (Exception e) 
        {
            Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
        }
    }


    }); 

//---------------------------READING DATA FROM THE FILE PLACED IN SDCARD-------------------//       
        btnReadSDFile.setOnClickListener(new OnClickListener()
        {

        public void onClick(View v) 
        {

        try {

            File myFile = new File("/sdcard/mysdfile.txt");
            FileInputStream fIn = new FileInputStream(myFile);
            BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
            String aDataRow = "";
            String aBuffer = "";
            while ((aDataRow = myReader.readLine()) != null) 
            {
                aBuffer += aDataRow ;
            }
            txtData.setText(aBuffer);
            myReader.close();
            Toast.makeText(v.getContext(),"Done reading SD 'mysdfile.txt'",Toast.LENGTH_SHORT).show();
        } 
        catch (Exception e)
        {
            Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
        }
        }
        }); 

与此同时在Android.Manifest中写下此权限




2> Erich Dougla..:

openFileOutput()方法将数据写入应用程序的私有数据区(而不是SD卡),因此可能不是您想要的.您应该能够调用Environment.getExternalStorageDirectory()以获取SD卡的根路径并使用它创建一个FileOutputStream.从那里,只需使用标准的java.io例程.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有