我如何使用此复制代码

时间:2011-04-27 14:43:29

标签: android eclipse copy sd-card

我发现这个代码似乎是我需要的,因为它会将字节文件复制到SD卡中。

但我该如何使用它?说我有一个名为mytext.txt的文本文件,我将它放在我的应用程序中?我该如何参考呢?我正在使用Eclipse

 public static final void copyfile(String srFile, String dtFile){
        try{
            File f1 = new File(srFile);
            File f2 = new File(dtFile);
            InputStream in = new FileInputStream(f1);
            OutputStream out = new FileOutputStream(f2);
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0){
                out.write(buf, 0, len);
            }
            in.close();
            out.close();
            System.out.println("File copied to " + f2.getAbsolutePath());
        } catch(FileNotFoundException ex){
            System.out.println(ex.getMessage() + " in the specified directory.");
            System.exit(0);
        } catch(IOException e){
            System.out.println(e.getMessage());
        }
    }

4 个答案:

答案 0 :(得分:0)

我会创建一个FileUtilities类或者其他类。你看过这里的例子了吗?

http://download.oracle.com/javase/tutorial/essential/io/copy.html

http://www.java2s.com/Code/Java/File-Input-Output/FileCopyinJava.htm

您不想盲目执行此代码。它看起来像是一个java控制台应用程序。系统Printlines不会出现用户在Android应用程序中看到的任何地方。我不知道System.exit()在Android应用程序中做了什么,但你也不想这样做。根据您的应用程序,您可能希望添加复制失败的Toast通知。你想至少记录下来。

根据您要复制的文件大小,您可能希望在后台线程中执行此操作,以免堵塞UI。

答案 1 :(得分:0)

如果您的代码很小,您可以将它添加为您自己的Activity的另一种方法,或者您可以创建一个实用程序类,假设

class MyUtilities {
    public static final void copyfile(String srFile, String dtFile) throws IOException, FileNotFoundException{
        File f1 = new File(srFile);
        File f2 = new File(dtFile);
        InputStream in = new FileInputStream(f1);
        OutputStream out = new FileOutputStream(f2);
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0){
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
        Log.d("MyUtilities", "File copied to " + f2.getAbsolutePath());
   }
}

您将使用它:

TextEdit text1 = findViewById(R.id.text1);
TextEdit text2 = findViewById(R.id.text2);

String file1 = text1.getText();
String file2 = text2.getText();

if (text1 != null and text2 != null) {
  try{
    MyUtilities.copyfile (file1, file2);
  } catch(FileNotFoundException ex){
      Log.e("MyUtilities", ex.getMessage() + " in the specified directory.");
  } catch(IOException e){
      Log.e("MyUtilities", e.getMessage());
  }
}

我添加了日志而不是System.out,并更改了Exception机制以更好地匹配Android需求。

答案 2 :(得分:0)

嗯,乍一看似乎是一个声音方法,除了你想要用一个Android Log方法替换System.out打印语句......但除此之外你可以复制/粘贴它并包含课堂上的方法。

要使用它,但是......您应该查看外部存储文档。 http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

您将需要使用Android方法来获取正确的SD卡目录等...

答案 3 :(得分:0)

我找到了一种将文件复制到SD卡的方法,但是谢谢大家的回复我真的很感谢你花时间来做这个!

我的解决方案详述如下。

I need to be able to store sound files for my application on sdcard