質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

1回答

8534閲覧

ネットワーク上のファイルを開きたい

katuhiko_kimura

総合スコア8

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2016/07/07 10:20

###前提・実現したいこと

Android タブレットでネットワーク上のWindowsPC内にある共有フォルダから
テキストファイルを読み込んで表示したいのですが、うまくいきません。
ESファイルエクスプローラでは当該フォルダ&ファイルが見えるように
設定されています。中身は数文字しかない動作試験用です。
ちなみにWindows 表現では \NETWORKPC1\PUBLIC\TEXTFILE.TXT
ESファイルエキスプローラからは LAN networkpc1 PUBLIC の中に見えるので
/LAN/networkpc1/PUBLIC/TEXTFILE.TXT と思っています。

どこをどう変えたら読み込めるのでしょうか。
すみませんが教えていただけますでしょうか。

###該当のソースコード
public void MyAction(){
TextView text1 = (TextView)findViewById(R.id.textview1);
try {
FileInputStream input = this.openFileInput("/LAN/networkpc1/PUBLIC/TEXTFILE.TXT");
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
StringBuffer strBuffer = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
strBuffer.append(line);
}
reader.close();
text1.setText(strBuffer.toString());
}
catch (Exception e) {
text1.setText("読み込めませんでした");
}
}}
###試したこと
大文字、小文字、先頭の / の有り無しと LAN の有り無しは試してみています。

###補足情報(言語/FW/ツール等のバージョンなど
Android Studio 2.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

---Android---
表示やボタンなどのGUI

ソケット

_------------

ネットワーク

---PC---
ソケット

ローカルファイルアクセス
_-------

直接外部のファイルを操作できたら大変です。
また、そのようなことが可能な状態にするアプリケーションも大変危険です。
なので、ESファイルエクスプローラなども独自アプリケーションのみファイル読み取りを許可するなどの対策をしているはずです。

上部の構成のように、外部のファイルを読み取るにはPC側には要求の受付・ローカルファイルの読み取り・ファイル内容の送信を実装して、Android側には要求の送信・ファイル内容の受信・受信内容の表示をする必要があります。
既存のアプリケーションではセキュリティの問題で認証などもしっかりとしているでしょうから、PC側とAndroid側を独自に実装することになるんじゃないでしょうか。
ESを作っている人か法人が何かしらファイル操作APIなどを作っていたら話は別でしょう。

ファイルサーバーを簡単に実装するjavaのAPIとかがあったらいいんですが、ざっくりと調べましたが見当たりませんでした。

投稿2016/07/07 13:11

intelf___

総合スコア868

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katuhiko_kimura

2016/07/07 22:44

ご回答ありがとうございます。 Windowsではごく普通に思うのですがAndriodでは普通ではないということ ですね。SDカードひとつとっても全機対応が難しいようですから わからないわけでもありませんけど。 FTPサーバーが相手ならどうでしょうか。 まずは自力でやり方を探ってみます。
intelf___

2016/07/08 02:55

FTPサーバなら、FTP通信用のポートに接続する必要があります。 21番,22番で送受信を分けていたと思います。 java.net.Socketクラスを使うなら String ip = "192.168.0.100";//適当 int port = 21; Socket socket = new Socket(ip, port); でipにサーバーのipアドレス、portに21番(22番?)ポートアクセスをして、FTPパスワードを送信して・・・とかになるんですかね。 読み取りだけならパスワードはいらないと思いますが、操作するなら必要でしょう。 どういう文字列で認証や命令をするのかわからないので、そっちの方を勉強する必要がありあそうです。 簡単に調べてみたら、FTPを簡単に行うパッケージがあるそうなので試してみてはどうでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問