2013-07-28 3 views
1

Я создать эту функцию ...Java файл загрузчик не работает

void DownloadFromDatabase() throws IOException { 
      URL website = new URL("http://theurlofmywebsite.org/databases/record_file.txt"); 

      ReadableByteChannel rbc = Channels.newChannel(website.openStream()); 
      FileOutputStream fos = new FileOutputStream("record_file.txt"); 

      fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); 
     } 

... и я это называю, когда я нажимаю кнопку, как вы можете увидеть здесь.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 

try { 

      DownloadFromDatabase(); 

     } catch (IOException ex) { 

      Logger.getLogger(xGrep.class.getName()).log(Level.SEVERE, null, ex); 

     } 
} 

При нажатии на кнопку, DownloadFromDatabase(); называется, но я не вижу файла record_file.txt на моем рабочем столе. Ты знаешь почему?

+5

Нет - но поскольку вы проглатываете все 'IOException' без их регистрации вообще, я предполагаю, что это происходит, и вы игнорируете его. Вы должны почти ** никогда не проглатывать подобные исключения. (Кроме того, вы должны следовать соглашениям о присвоении имен Java и более четко читать свой код.) –

+0

, а затем? что я мог сделать с кодом? –

+1

Ну, как только вы зарегистрировали исключение, у вас будет гораздо лучшее представление о том, что происходит не так. Например, возможно, у вас нет доступа на запись к локальному файлу. Или, может быть, он не работает в передаче HTTP. –

ответ

2

Этот код не самый лучший, но я сделал тест на своем компьютере, и он работает. Он загружает текстовый файл с 500 строк за 2 секунды.

void DownloadFromDatabase() throws MalformedURLException, IOException { 

    URLConnection conn = new URL("your_url_here").openConnection(); 

    InputStream is = conn.getInputStream(); 
    OutputStream outstream = new FileOutputStream(new File("filename.txt")); 

    byte[] buffer = new byte[4096]; 
    int len; 

    while ((len = is.read(buffer)) > 0) { 
     outstream.write(buffer, 0, len); 
    } 
    outstream.close(); 
    } 

Я назвал его DownloadFromDatabase() поэтому вы только копировать/вставить этот код вместо вашего. Также обратите внимание на исключения.

+1

Где он загружает файл? –

+2

Куда вы хотите. Посмотрите там: новый файл ("filename.txt"). Введите, например, C: //folder1//folder2//filename.txt, чтобы получить нужный путь :) –

+0

О, хорошо. Кстати, он отлично работает, спасибо DK64. –

Смежные вопросы