2012-03-16 28 views
0

我正尝试使用输入/输出流将我的Blackberry资产文件夹复制到SD卡。但我似乎无法得到这个工作。运行指示error: cannot find symbol inConn.close(); & outConn.close();的Blackberry模拟器时,我收到一条错误消息。有人能告诉我做错了什么吗?Blackberry - 如何使用输入/输出流将文件复制到SD卡?

import com.phonegap.api.Plugin; 
import com.phonegap.api.PluginResult; 
import javax.microedition.io.*; 
import javax.microedition.io.file.*; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import org.json.me.JSONArray; 

public static PluginResult execute(JSONArray args) { 
String[] resourseFileNames = {"file1","file2"."file3"}; 
final int length = resourseFileNames.length; 

for(int i=0; i<length; i++) { 
    String srcFile = "file:///store/home/user/sample/www" + resourseFileNames[i]; 
    FileConnection srcConn = (FileConnection) Connector.open(srcFile, Connector.READ); 
    InputStream in = srcConn.openInputStream(); 
    String dstFile = "file:///SDCard/MyAppName/www" + resourseFileNames[i]; 
    FileConnection dstConn = (FileConnection)Connector.open(dstFile, Connector.WRITE); 
    OutputStream out = dstConn.openOutputStream(); 
    // Copy the bits from instream to outstream 
    byte[] buf = new byte[1024]; 
    int len; 
    while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 
    in.close(); 
    inConn.close(); 
    out.close(); 
    outConn.close(); 
} 
    String value = "OK"; 
return new PluginResult(PluginResult.Status.OK, value); 
} 

我正在使用Phonegap如果这有什么区别。谢谢。

+0

将'inConn'替换为'srcConn'和'outConn'以'dstConn'。这是我的错字。 – mrvincenzo 2012-03-19 14:35:51

+0

我已经更新了我的答案。我应该编译没有任何问题。如果您仍然遇到问题,那么您应该检查您的其他代码片段(将'{“file1”,“file2”。“file3”};'更改为'{“file1”,“file2”,“file3”};'。 – mrvincenzo 2012-03-19 15:45:45

回答

3

你没有正确打开流。相反,您应该为源文件和目标文件使用单独的FileConnection。然后使用 FileConnection#openInputStream()打开InputStreamFileConnection#openOutputStream()打开OutputStream

代码片段:

for(int i=0; i<length; i++) { 
    try { 
     String srcFile = "file:///store/home/user/sample/www" + resourseFileNames[i]; 
     FileConnection srcConn = (FileConnection) Connector.open(srcFile, Connector.READ); 
     InputStream in = srcConn.openInputStream(); 

     String dstFile = "file:///SDCard/myAppName/www" + resourseFileNames[i]; 
     FileConnection dstConn = (FileConnection)Connector.open(dstFile, Connector.WRITE); 
     OutputStream out = dstConn.openOutputStream(); 

     // Copy the bits from instream to outstream 
     byte[] buf = new byte[1024]; 
     int len; 
     while ((len = in.read(buf)) > 0) { 
      out.write(buf, 0, len); 
     } 

     in.close(); 
     srcConn.close(); 

     out.close(); 
     dstConn.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

更新1:导致“找不到符号”错误固定几个错别字。

UPDATE 2:用try/catch(catch IOException)将代码包围起来。

+0

嗨,上面看起来正是我在找什么,但是由于某种原因,当我试图使用ant build来加载模拟器时,我得到了几个错误消息,所有这些都表明'错误:找不到符号' - 这些都是输入流,连接器等。 – 2012-03-19 08:42:04

+0

我目前正在导入以下类:import com.phonegap.api.Plugin; import com.phonegap.api.PluginResult; import java.io.DataInputStream; import java。 io.DataOutputStream; import javax.microedition.io.file; import javax.microedition.io.file.FileConnection; Thanks – 2012-03-19 08:42:37

+0

嗨,我已经改变了几个类,现在它只有inC onn.close(); &outConn.close();无法找到的符号。 – 2012-03-19 10:10:28

相关问题