我们可以将Android移动应用程序中的文件复制到电脑上

时间:2017-05-25 14:28:10

标签: android

我正在尝试使用InputStream,OutputStream,FileInputStream和FileOutputStream从我的电脑复制SD卡图像文件。但错误来自FileOutputStream,因为我们传递给它的值是桌面文件夹。代码是

File file = new File(path); \\ where 'path' is the sd card image file path
File destFolder = new File("D:\\images\\"); \\ I know this path is not correct. IP address of PC is missing here

InputStream in = new FileInputStream(file);
OutputStream out = new FileOutputStream(destFolder);

byte[] buf = new byte[1024];
int len;

while ((len = in.read(buf)) > 0) {
     out.write(buf, 0, len);
}
in.close();
out.close();

当我们可以将文件从一个系统复制到同一个网络上的另一个系统时,为什么我们不能在移动设备到电脑的同时通过wifi连接到同一个网络。

如果无法使用上述方法,那么执行此操作的方法是什么。

错误是:

05-25 20:06:20.836 2576-2576/com.example.user.storeimage E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.example.user.storeimage, PID: 2576

java.lang.IllegalStateException: Could not execute method for android:onClick

at android.view.View$DeclaredOnClickListener.onClick(View.java:4452)

at android.view.View.performClick(View.java:5198)

at android.view.View$PerformClick.run(View.java:21147)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:148)

at android.app.ActivityThread.main(ActivityThread.java:5417)

at java.lang.reflect.Method.invoke(Native Method)

at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Caused by: java.lang.reflect.InvocationTargetException

at java.lang.reflect.Method.invoke(Native Method)
                                                                           at android.view.View$DeclaredOnClickListener.onClick(View.java:4447)
                                                                           at android.view.View.performClick(View.java:5198) 
                                                                           at android.view.View$PerformClick.run(View.java:21147) 
                                                                           at android.os.Handler.handleCallback(Handler.java:739) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                           at android.os.Looper.loop(Looper.java:148) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                        Caused by: java.io.FileNotFoundException: D:\images\: open failed: EROFS (Read-only file system)
                                                                           at libcore.io.IoBridge.open(IoBridge.java:452)
                                                                           at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
                                                                           at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
                                                                           at com.example.user.storeimage.copyimagetopc.onClickSaveBtn(copyimagetopc.java:52)
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at android.view.View$DeclaredOnClickListener.onClick(View.java:4447) 
                                                                           at android.view.View.performClick(View.java:5198) 
                                                                           at android.view.View$PerformClick.run(View.java:21147) 
                                                                           at android.os.Handler.handleCallback(Handler.java:739) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                           at android.os.Looper.loop(Looper.java:148) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                        Caused by: android.system.ErrnoException: open failed: EROFS (Read-only file system)
                                                                           at libcore.io.Posix.open(Native Method)
                                                                           at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
                                                                           at libcore.io.IoBridge.open(IoBridge.java:438)
                                                                           at java.io.FileOutputStream.<init>(FileOutputStream.java:87) 
                                                                           at java.io.FileOutputStream.<init>(FileOutputStream.java:72) 
                                                                           at com.example.user.storeimage. copyimagetopc.onClickSaveBtn(copyimagetopc.java:52) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at android.view.View$DeclaredOnClickListener.onClick(View.java:4447) 
                                                                           at android.view.View.performClick(View.java:5198) 
                                                                           at android.view.View$PerformClick.run(View.java:21147) 
                                                                           at android.os.Handler.handleCallback(Handler.java:739) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                           at android.os.Looper.loop(Looper.java:148) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                           at java.lang.reflect.Method.invoke(Native Method)

2 个答案:

答案 0 :(得分:1)

File适用于文件系统路径,适用于本地文件系统。在Android的情况下,本地文件系统是Android设备。 Android设备上没有D:\\images\\。 Android不支持将SMB服务器映射到文件系统路径。

  

如果无法使用上述方法,那么执行此操作的方法是什么。

直接使用SMB(例如,jCIFS)或找到一些通过某种API(例如ContentProvider)公开SMB服务器的应用程序。

答案 1 :(得分:0)

由于以下错误和CommonsWare的回答,我认为您需要知道您的手机和计算机操作系统位于不同的主机中。所以D:\\images\\指向相同的主机地址。您需要指向您的LAN地址并使用samba或相同的Windows共享器之类的协议来共享文件夹并提供权限,或者您可以使用像XAMPP这样的Web服务器并将该文件作为编码基础发送64字符串和解码然后在xampp服务器上使用php并将其保存到文件夹中。