0

サーバーからテキスト ファイルをダウンロードし、メモリに保存する必要があります。次に、行ごとに移動して読みます。より良い方法 - サーバーから直接 1 行ずつ読み取ります。

編集:「メモリに保存する」とは、ファイルに書き込まないことを意味します。

どうやってそれをしますか?

ありがとう!

4

3 に答える 3

7

それimpossibleについてはどうですか?次のコードを試してください: ファイルを作成する CONTEXT は Activity/ApplicationContext/etc である可能性があることに注意してください。

public boolean downloadFile(final String path)
    {
        try
        {
            URL url = new URL(path);

            URLConnection ucon = url.openConnection();
            ucon.setReadTimeout(5000);
            ucon.setConnectTimeout(10000);

            InputStream is = ucon.getInputStream();
            BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5);

            File file = new File(CONTEXT.getDir("filesdir", Context.MODE_PRIVATE) + "/yourfile.png");

            if (file.exists())
            {
                file.delete();
            }
            file.createNewFile();

            FileOutputStream outStream = new FileOutputStream(file);
            byte[] buff = new byte[5 * 1024];

            int len;
            while ((len = inStream.read(buff)) != -1)
            {
                outStream.write(buff, 0, len);
            }

            outStream.flush();
            outStream.close();
            inStream.close();

        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }

        return true;
    }

これは、アクティビティの使用法を含む単純なファイル R/Wcontextです。

編集:あなたの最近変更された質問に従って、私はこれをここに投稿しています:

このコードを試してください:

try {
    // Create a URL for the desired page
    URL url = new URL("ksite.com/thefile.txt");

    // Read all the text returned by the server
    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    String str;
    while ((str = in.readLine()) != null) {
        // str is one line of text; readLine() strips the newline character(s)
    }
    in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}

これはうまくいくはずです

于 2013-06-12T13:09:49.167 に答える
0

これは私がしました。サーバーとの接続を開くだけです (FTP サーバーの場合はFTPClient、Apache コモンズから接続するだけです)。この接続設定を新しい に取得しAsyncTask<...,...,...>、接続コードを に配置しますdoInBackground(...)。編集:私はこのようにしました:

      FileOutputStream fos = activity.openFileOutput("temp.tmp", Context.MODE_PRIVATE);
      System.out.println(activity.getFilesDir().getAbsolutePath());
      client.enterLocalPassiveMode();
      client.changeToParentDirectory();
      client.changeWorkingDirectory("/dsct2c/" + username);
      client.retrieveFile(filename, fos);
      fos.close();
      publishProgress(activity.getString(R.string.toast_file_saved) + " " + filename);



      FileInputStream fis = activity.openFileInput("temp.tmp");
      InputStreamReader isr = new InputStreamReader(fis);
      BufferedReader br = new BufferedReader(isr);

      String line = br.readLine();
      while(line != null)
      {
        publishProgress(line);
        System.out.println(line);
        line = br.readLine();
      }
于 2013-06-12T13:08:23.380 に答える