2011-06-29 116 views
2

所以即時通訊新的android開發和我一直在嘗試和錯誤的方式進行了大量的搜索很長的一切。我的問題是:我有一個按鈕,我想鏈接到一段代碼,它將從一個特定的站點開始下載。我的代碼如下。點擊按鈕文件下載?

public void Download(View Button) { 
    public void DownloadFromUrl(){ 
     try { 

      URL url = new URL("www.generic-site.html"); 
      HttpURLConnection c = (HttpURLConnection) 
      url.openConnection(); 
      c.setRequestMethod("GET"); 
      c.setDoOutput(true); 
      c.connect(); 

      String Path = Environment.getExternalStorageDirectory() 
       +"/download/"; 
      Log.v("PortfolioManger", "PATH: "+Path); 
      File file = new File(Path); 
      file.mkdirs(); 
      FileOutputStream fos = new FileOutputStream("site.html"); 

      InputStream is = c.getInputStream(); 

      byte[] buffer = new byte[702]; 
      int len1 = 0; 
      while ((len1 = is.read(buffer)) != -1) { 
       fos.write(buffer, 0, len1); 
      } 
      fos.close(); 
      is.close(); 
     } catch (IOException e) { 
      Log.d("PortfolioManger", "Error: "+e); 
     } 
     Log.v("PortfolioManger", "Check: "); 
    } 

我試圖做的是使用「公共無效下載(查看按鈕)」命令來啓動下載,但即時得到錯誤:

Multiple markers at this line 
- Syntax error, insert "EnumBody" to complete BlockStatements 
- Syntax error on token "void", @ expected 
- Syntax error, insert "enum Identifier" to complete 
EnumHeaderName" error under "Public void DownloadFromUrl() 

我知道它可能是一個愚蠢的問題,但任何人都可以點亮一下嗎?

回答

5

你不能把一個函數另一個函數裏面

public void Download(View Button) { 
public void DownloadFromUrl(){ 
+0

如何我可以修復它任何提示? – luke

+3

通過學習Java之前學習Android – mibollma

1

@mibollma是正確的,你實際上是不尊重的階級結構在java中。

在Java 類文件 - 必須包含一個且只有一個公共類 - 這個類的名稱和文件的名稱必須匹配

可以有其他的類,但要麼不公開或內部像

//in A.java 
public class A 
{ 
    public class B 
    {}//inner class B 

}//class A 

class C 
{}//class C 

在一類的類,則允許使用 - 數據成員定義 - 內類的定義(見上文,所以是這樣的結構是遞歸/分) - 方法

public class A 
{ 
    //data member 
    int a = 0; 
    //other data member, static and private, why not 
    private static String b = "toto"; 

    //methods 
    private void met(int b) 
    {}//met 

    //... 
}//class A 

這是大局。在一個方法中,除了指令外,不能添加任何東西。不允許嵌套方法。請注意,這些示例不討論匿名內部類,它有點更先進。

請花一些時間回顧一下java naming conventions,你的代碼並不尊重命名標準,這很難遵循。

問候, 斯特凡

4

你真的需要理清你的Java語法,但現在,這將工作,假設你把一個正確的URL(我沒能測試你使用的演示網址):

public class DownloadExampleActivity extends Activity { 
    /** Called when the activity is first created. */ 

    Button button; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     button = (Button) findViewById(R.id.download_button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       DownloadFromUrl(); 
      } 
     }); 
    } 

    public void DownloadFromUrl() { 
     try { 

      URL url = new URL("www.generic-site.html"); 
      HttpURLConnection c = (HttpURLConnection) url.openConnection(); 
      c.setRequestMethod("GET"); 
      c.setDoOutput(true); 
      c.connect(); 

      String Path = Environment.getExternalStorageDirectory() + "/download/"; 
      Log.v("PortfolioManger", "PATH: " + Path); 
      File file = new File(Path); 
      file.mkdirs(); 
      FileOutputStream fos = new FileOutputStream("site.html"); 

      InputStream is = c.getInputStream(); 

      byte[] buffer = new byte[702]; 
      int len1 = 0; 
      while ((len1 = is.read(buffer)) != -1) { 
       fos.write(buffer, 0, len1); 
      } 
      fos.close(); 
      is.close(); 
     } catch (IOException e) { 
      Log.d("PortfolioManger", "Error: " + e); 
     } 
     Log.v("PortfolioManger", "Check: "); 
    } 

} 
+0

此外,它可能是一個好主意,分配你的內存2的權力 - 我看你有一個字節的大小702。除非你真的需要它的大小,我建議做它512或1024。 –