2017-05-25 45 views
-1

我想使用的InputStream,OutputStream的,和的FileInputStream FileOutputStream中我的電腦拷貝SD卡圖像文件。但是,錯誤出現在FileOutputStream中,因爲我們通過這個值是桌面文件夾。該代碼是我們可以從Android手機的應用程序文件複製到電腦上

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連接在同一網絡上的PC 。

如果上面的方法是不可能的,那麼什麼是做到這一點的方法。

錯誤是:

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) 
+0

發佈錯誤您是否正在Logcat –

+0

@Roger RV:應用程序已關閉,說「不幸的應用程序已關閉」 – Shekar

+0

@Roger RV:錯誤代碼包含在原始文章中。 – Shekar

回答

1

File作品文件系統路徑,本地文件系統。在Android的情況下,本地文件系統是Android設備。 Android設備上沒有D:\\images\\。 Android不支持將SMB服務器映射到文件系統路徑。

如果用上述方法是不可能的,那麼做什麼是這樣的方法。

要麼與SMB直接(例如,JCIFS)工作或找到一些應用程序,通過某種API的暴露SMB服務器(例如,ContentProvider)。

0

如下面的錯誤和CommonsWare的回答,我認爲你需要知道你的手機和電腦的操作系統,在不同的主機上。所以D:\\images\\被pointting到同一個主機地址。您需要將您的局域網地址,並使用像桑巴或相同的Windows共享資源的協議來共享文件夾,並給予權限,或者你可以使用一個Web服務器像XAMPP和發送文件作爲一個base 64編碼字符串和解碼然後在XAMPP服務器與PHP並將其保存到一個文件夾。

相關問題