2015-12-29 2 views
-2

У вас возникли проблемы с этим кодом, и они смотрели и играли с ним в нескольких разных случаях и ангелах и, похоже, не могли заставить его не принимать файл, подчеркнутый в red (Code Below) Это принадлежит Dropbox Api, метод, в котором Im пытается создать, - это загрузить файл клиента в dropBox ... Im с помощью JFileChooser, чтобы открыть файл, а затем поместить его в выбранный файл, а не fileInputStream и именно здесь возникает проблема, независимо от того, каким образом я пытаюсь ее обойти, не переходя в сторону. Я никогда не работал с этим API раньше, но посмотрел на множество разных exp. код и stilll, похоже, не могут получить его даже после просмотра кода?Проблема с File/FileInputStream

package daword; 

import java.util.ArrayList; 
import java.awt.Desktop; 
import java.io.File; 
import com.dropbox.core.DbxAccountInfo; 
import com.dropbox.core.*; 
///import com.dropbox.core.DbxEntry.File; 
import com.dropbox.core.json.JsonReader; 
import com.dropbox.core.json.JsonReader.FileLoadException; 
import java.awt.BorderLayout; 

import java.awt.Component; 
import java.awt.FlowLayout; 
import java.awt.Toolkit; 
import java.awt.datatransfer.DataFlavor; 
import java.awt.datatransfer.Transferable; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 

import java.io.*; 
import java.net.InetAddress; 
import java.net.InetSocketAddress; 
import java.net.Socket; 
import java.net.UnknownHostException; 
import java.util.Locale; 
import java.util.Scanner; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import java.util.Locale; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javafx.stage.FileChooser; 
import javax.imageio.ImageIO; 
import javax.naming.Context; 
import javax.swing.AbstractAction; 
import javax.swing.ImageIcon; 
import javax.swing.JDialog; 
import javax.swing.JFileChooser; 
import javax.swing.JLabel; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JPopupMenu; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.JToolBar; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 
import javax.swing.filechooser.FileNameExtensionFilter; 
import javax.swing.text.DefaultEditorKit; 
import javax.swing.text.DefaultEditorKit.CopyAction; 
import javax.swing.text.DefaultEditorKit.CutAction; 


public class dropBox extends JFrame implements ActionListener{ 
    File inputFile; 
private boolean logedIn = false; 
JFileChooser fc; 
String dirName; 
final String APP_KEY = "00000"; 
final String APP_SECRET = "00000"; 
private JButton connect, upload; 
ImageIcon im1; 
DbxClient client; 
JLabel jlab; 
JPanel jpan; 
ImageIcon login; 
BorderLayout borderlayout; 
JTextField field = new JTextField(15); 
JPopupMenu menu = new JPopupMenu("Menu"); 

//boolean isAuthTokenReady = false; 
InetSocketAddress add; 
//boolean connection = false; 
public JButton jb; 



public dropBox(){ 
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
setSize(600,600); 
setLocationRelativeTo(null); 
setResizable(false); 
setLookAndFeel(); 

JOptionPane.showMessageDialog(null,"1.Please Click Login\n2.Click Options\n3.Use How You Please!", 
"Instructions", JOptionPane.WARNING_MESSAGE); 
internet(); 

borderlayout = new BorderLayout(); 
getClipboard(); 
im1 = new ImageIcon(getClass().getResource("dropBox.gif")); 
jlab= new JLabel(im1); 
jlab.setLayout(null); 
add(jlab); 
login = new ImageIcon(getClass().getResource("login.gif")); 
connect = new JButton(login); 

connect.setSize(180, 57); 
jlab.add(connect); 
connect.addActionListener(this); 


upload = new JButton ("upload"); 
upload.setBounds(0, 0, 220, 30); 
upload.addActionListener(this); 
jlab.add(upload); 
BorderLayout bord = new BorderLayout(); 



setVisible(true); 
} 



public void internet(){ 
Socket sock = new Socket(); 
    add = new InetSocketAddress("www.google.com", 80); 
    try{ 
     wifi= true; 
     sock.connect(add, 3000); 
     System.out.println("Connection Present"); 
     ImageIcon img = new ImageIcon("/images/wifi.png"); 
     jb = new JButton(img); 


    } catch(IOException e){ 

     System.out.println(" No Connection"); 
    } 

} 





@Override 
public void actionPerformed(ActionEvent evt) { 
Object source = evt.getSource(); 
Object uploadS = evt.getSource(); 
if(source == connect){ 
try{ 
drop(); 
    }catch(Exception e){ 
JOptionPane.showMessageDialog(null,"Unable To Connect :(Please Try Again ..", 
"ALERT", JOptionPane.WARNING_MESSAGE); 

} 

}else if(uploadS == upload){ 

     if (logedIn = true){ 
      try { 
       uploadFile(); 
      } catch (DbxException ex) { 
       Logger.getLogger(dropBox.class.getName()).log(Level.SEVERE, null, ex); 
      } catch (IOException ex) { 
       Logger.getLogger(dropBox.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 



} 
} 



private void setLookAndFeel() { 
try{ 
UIManager.setLookAndFeel("UIManager.getSystemLookAndFeelClassName"); 
}catch (ClassNotFoundException | InstantiationException | IllegalAccessException | 
UnsupportedLookAndFeelException e){ 
} 
} 


public static String getClipboard() { 
Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); 
try { 
if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) { 
return (String) t.getTransferData(DataFlavor.stringFlavor); 
} 
} catch (Exception e) { 
e.printStackTrace(); 
} 
return null; 
} 


// JButton Login 
public void drop() throws IOException, DbxException{ 

String userLocale = Locale.getDefault().toString(); 
DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET); 
DbxRequestConfig config = new DbxRequestConfig("Daword", 
Locale.getDefault().toString()); 
DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo); 
// Have the user sign in and authorize your app. 
String authorizeUrl = webAuth.start(); 
System.out.println("You Will Be Redirected To: " + authorizeUrl); 
JOptionPane.showMessageDialog(null,"Go To:"+ authorizeUrl, 
"" + 
"", JOptionPane.WARNING_MESSAGE); 
java.awt.Desktop.getDesktop().browse(java.net.URI.create(authorizeUrl)); 
System.out.println("Enter Your auth code in this prompt and hit enter and wait.."); 



String userA = JOptionPane.showInputDialog(null, "Enter your auth code here:"); //Prompt for 

if (userA.isEmpty()) { 
System.exit(1); 
} 
System.out.println(userA.trim()); //For testing purposes print the trimmed auth code to console. 
// [Omitted Code] // 
// This will fail if the user enters an invalid authorization code. 


DbxAuthFinish authFinish = webAuth.finish(userA); 
String accessToken = authFinish.accessToken; 
client = new DbxClient(config, accessToken); 
DbxAuthInfo authInfo = new DbxAuthInfo(authFinish.accessToken, appInfo.host); 
System.out.println("Linked account: " + client.getAccountInfo().displayName); 


JOptionPane.showMessageDialog(null, "Welcome"+ 
client.getAccountInfo().displayName+ authFinish.accessToken+ 
" And Welcome To Our Community!"); 

} 




public void uploadFile() throws FileNotFoundException, DbxException, IOException{ 

fc = new JFileChooser(); 
fc.setMultiSelectionEnabled(true); 
fc.setFileSelectionMode(JFileChooser.FILES_ONLY); 

int dialog = fc.showSaveDialog(this); 

if (dialog == JFileChooser.APPROVE_OPTION) { 
    inputFile = fc.getSelectedFile().getAbsoluteFile(); 




    try (FileInputStream inputStream = new FileInputStream(inputFile)) { 

     DbxEntry.File uploadedFile = client.uploadFile("", 
     DbxWriteMode.add(), inputFile.length(), inputStream); 
     String sharedUrl = client.createShareableUrl(""); 
     System.out.println("Uploaded: " + uploadedFile.toString() + " URL " + sharedUrl); 
    }  



} 
} 
} 
+2

Вы можете начать с того, что сообщение идет с красным подчеркиванием. (Я предполагаю, что это IDE, которая дает вам красную подчеркивание. Предположительно, она также может сообщить вам фактическую ошибку.) – smarx

+0

что это сообщение? –

+0

Пожалуйста, опубликуйте свой вывод компилятора и полный нерабочий код (например, что такое 'rootDir' и т. Д.) –

ответ

0

Похоже, вы пропустили import java.io.File;

+0

Спасибо smarx, который помог красной подчеркнуть. Я не могу поверить, что я забыл импортировать это. Просто сражаюсь с JFileChooser в данный момент. Не разрешая файлы, которые нужно взять в – TravJav92

+0

Исключение из потока «AWT-EventQueue -0" java.lang.NullPointerException \t в daword.dropBox.uploadFile (dropBox.java:263) \t в daword.dropBox.actionPerformed (dropBox.java:167) – TravJav92

+0

Это исключение, кажется, в коде вы не имеете , поэтому я не вижу, как кто-то сможет угадать проблему. – smarx

0

Это была решена в основном то, что произошло, как smarx указал, не хватает красно-быков для меня заметить импортировать java.io как я имел DBX импорт файлов, который был конфликтующим .. Я также не заметил, что я не включал код для хранения кодов доступа, поэтому каждый раз, когда я запускал программу, я должен был войти или должен был хранить ключ. Короче говоря, путь к файлу также вызывал проблемы, поскольку я предположил, что File Chooser получил код и передал его во входной поток, который он не сделал, абсолютный путь к местоположению файла exp: user/me/desktop/cool.txt был необходимо. Я просмотрел документацию на Dropbox больше о том, как правильные параметры и с помощью этого сообщества собрали его вместе, благодаря чему все могут ответить.