| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > путь к файлу |
| Автор: LAKERS 7.3.2006, 16:08 |
| указал путь к файлу в команде ftp.put("c:\my.txt"), пишет что неправильно, \\ - то же неправильно... как все таки правильно? / и // то же не воспринимает... |
| Автор: Beard 7.3.2006, 16:10 |
| А что за объект такой - ftp? И что конкретно пишет? Можно весь код? |
| Автор: GIK 7.3.2006, 16:11 | ||
Это в каком месте ты так указываешь? |
| Автор: Beard 7.3.2006, 16:16 | ||
Вот на такую строку
компилятор не должен ругаться |
| Автор: allex 7.3.2006, 16:30 |
| Может, он url хочет? file:///C:/my.txt |
| Автор: Sleepy_PIP 7.3.2006, 18:28 | ||||||||
для org.apache.commons.net.ftp.FTPClient; к примеру можно так:
для org.apache.commons.vfs можно так:
для com.sshtools.j2ssh.* можно например так
вот. выпендрился так сказать или я не о том? |
| Автор: LAKERS 7.3.2006, 18:48 | ||||
| да, компилятор не ругается, но почему-то по этой команде он файл не отправляет на сервер, если я указываю просто файл не с локальной машины, то он записывает на сервер под этим именем пустой файл, а если я на указываю путь к файлу на локалке, то он не пишет на сервак... to SLEEPY PIP: использую import sun.net.ftp.*; Добавлено @ 18:52 пишу
Добавлено @ 18:53 если вот так, то нулевой файл записывает, а если как сверху, то не хочет писать нивкакую....
|
| Автор: powerOn 7.3.2006, 22:00 | ||
А ты действительно можешь прямо в корень С:\ писать файлы? Может нужно другой контекст указать?? |
| Автор: LSD 8.3.2006, 00:03 | ||
1. Проверь что ты правильно указал путь к файлу:
2. Попробуй считать файл с сервера и установи бинарный режим передачи файлов. |
| Автор: LAKERS 9.3.2006, 13:34 | ||
| закинул я пакет sun.net.ftp, на сайте сановском написано что ошибка какая-то в этом пакете, не буду его трогать, скачал пакет org.apache.commons указал путь, вписал import org.apache.commons.net.*; но выдает ошибку, ожидается типа 45 версия чего-то там, а не 46... может кто подскажет?
|
| Автор: LSD 9.3.2006, 18:58 | ||
У тебя старая версия JDK. Или обнови JDK, или скачай исходники и пересобери под свою версию JDK. |
| Автор: LAKERS 9.3.2006, 21:20 |
| у меня на КПК стоит машина PersonalJava, настолько я помню, она работает с JDK не выше JDK 1.1.8, и как это пересобрать для своей версии JDK? |
| Автор: Beard 9.3.2006, 21:24 |
| Берешь исходники здесь: http://archive.apache.org/dist/jakarta/commons/net/old/v1.0.0/commons-net-1.0.0-src.zip Собираешь их ant-ом (build.xml имеется в архиве) Добавлено @ 21:26 Да - там еще и project.xml есть, так что можно попробовать собрать и первым Maven-ом, но не советую |
| Автор: LAKERS 9.3.2006, 22:36 |
| а пошаговую инструкцию по сборке и дальнейшем пользовании можно? |
| Автор: LSD 9.3.2006, 22:47 |
| По поводу ANT почитай http://vingrad.ru/JAVA-JAV-002976 (build.xml у тебя уже есть). Скачать JDK 1.1.8 для PC, можно http://java.sun.com/products/archive/jdk/1.1/. |
| Автор: Beard 10.3.2006, 00:51 |
| Нужно (если пользовать ant): 1. Скачать исходники commons-net (ссылка выше). Пусть распакованы в c:\libs\commons-net-1.0.0 2. Скачать ant (например, 1.1 - http://archive.apache.org/dist/ant/binaries/jakarta-ant-1.3.zip - работает на JDK 1.1) . И, соответственно, распаковать в какую-нибудь директорию (пусть с:\ant-1.3) 3. выполнить (под виндой): set ANT_HOME=c:\ant-1.1 set PATH=%PATH%;%ANT_HOME%\bin (или залезть в Environment Variables и там добавить это ручками) Сборка: 1. Выполнить: ant -buildfile build.xml jar в директории с исходниками (там, где лежит build.xml - c:\libs\commons-net-1.0.0) Скорее всего будут какие-нить проблемы с атрибутами в build.xml (так как файл билда расчитан на ант "постарше") - удалим их. Может и на элемент ругнуться - удалим весь узел. Если после этого соберется, то ок (jar будет лежать в папочке target) Да - посмотри в build.xml элементы с именем "get" (скорее всего они будут в элементе target c атрибутом name="get-deps") - если не будет компилироваться по той же причине (wrong version: 46, expected 45) - закомментируй их. Ну вроде все |
| Автор: LAKERS 10.3.2006, 09:50 |
| спасибо, попробую |
| Автор: LSD 10.3.2006, 10:38 | ||
Без зависимостей код не скомпилируется, их тоже надо будет пересобрать. |
| Автор: Beard 10.3.2006, 11:40 |
| Там из зависимостей будет junit и то же ант версии побольше, без которых, я думаю, все вполне соберется |
| Автор: LAKERS 10.3.2006, 12:10 | ||||
Добавлено @ 12:16 да и ссылка битая...можно не битую? качать бинари или соурс? Добавлено @ 12:22
вот это как выполнить? если в Environment Variables, то я через ";" добавляю %PATH%;%ANT_HOME%\bin а для set ANT_HOME=c:\ant-1.1 - что добавить? |
| Автор: Beard 10.3.2006, 13:05 |
| 1.3 - это я в начале версию поменьше взял на всякий случай и забыл исправить не битая ссылка http://archive.apache.org/dist/ant/binaries/jakarta-ant-1.3-bin.zip Делаешь новую переменную с именем ANT_HOME |
| Автор: LAKERS 10.3.2006, 22:07 | ||
to Beard
1. Скачал исходники commons-net. распакованы в c:\libs\commons-net-1.0.0 2. Скачал ant 1.3 . И, соответственно, распаковал вдиректорию ( с:\ant-1.3) 3. выполнил: залез в Environment Variables и там добавил ручками куда-то в середину c:\ant-1.3\jakarta-ant-1.3\bin; Сборка: 1. Выполнил: ant -buildfile build.xml jar в директории с исходниками (там, где лежит build.xml - c:\libs\commons-net-1.0.0) C:\libs\commons-net-1.0.0>ant -buildfile build.xml jar Warning: JAVA_HOME environment variable is not set. If build fails because sun.* classes could not be found you will need to set the JAVA_HOME environment variable to the installation directory of java. Unable to initialize threads: cannot find class java/lang/Thread C:\libs\commons-net-1.0.0> вот что вышло, что я сделал не так? |
| Автор: batigoal 10.3.2006, 23:12 |
| Ну так, собственно, надо проверить, установлена ли переменная окружения JAVA_HOME. Она должна указывать на каталог инсталляции JDK. |
| Автор: LAKERS 11.3.2006, 13:24 |
| и как правильно? задать новую переменную JAVA_HOME=C:\JDK1.1.8 а в Path ее тоже надо прописывать? или каталог C:\JDK1.1.8\bin так и оставлять? или прописывать JAVA_HOME\bin? |
| Автор: LSD 11.3.2006, 13:30 |
| Угу создаешь переменную JAVA_HOME и записываешь в нее C:\JDK1.1.8. А в PATH добавляешь %JAVA_HOME%\bin. |
| Автор: LAKERS 11.3.2006, 13:40 | ||
% - а вот это зачем надо? |
| Автор: LSD 11.3.2006, 14:08 |
| Когда ты пишешь JAVA_HOME\bin, то это останется как есть, а если написать %JAVA_HOME%\bin то будет найдена переменная JAVA_HOME и ее значение будет подставленно в указанное место. Т.е. в твоем случае результатом JAVA_HOME\bin - будет JAVA_HOME\bin, а %JAVA_HOME%\bin - будет C:\JDK1.1.8\bin. |
| Автор: LAKERS 11.3.2006, 18:19 |
| сделал все.... он создал папку target\lib она пустая и все, что дальше? C:\libs\commons-net-1.0.0>ant -buildfile build.xml jar Buildfile: build.xml init: [mkdir] Created dir: C:\libs\commons-net-1.0.0\target\lib BUILD FAILED C:\libs\commons-net-1.0.0\build.xml:23: Could not create task of type: condition . Common solutions are to use taskdef to declare your task, or, if this is an op tional task, to put the optional.jar in the lib directory of your ant installati on (ANT_HOME). Total time: 0 seconds C:\libs\commons-net-1.0.0> |
| Автор: Beard 12.3.2006, 01:36 |
| Найди элемент "condition" и закомментируй его |
| Автор: LAKERS 12.3.2006, 10:34 | ||||
таким образом закомментировать? тогда пишет вот это
|
| Автор: tux 12.3.2006, 11:03 | ||
|
| Автор: LAKERS 12.3.2006, 19:47 |
| ну вроде получилось, и это что, типа этот пакет commons-net-1.0.0 под JDK 1.1.8 подстроил? |
| Автор: LSD 13.3.2006, 00:42 | ||
Вроде того как, только проверь работает ли он. |
| Автор: LAKERS 13.3.2006, 10:06 |
| ну откомпилировал без ошибок...теперь надо саму прогу довести до ума...всем спасибо... |
| Автор: LAKERS 13.3.2006, 10:58 |
| дома все прошло ок, на работе что-то долго все происходило, более 5 минут... может что не в порядке? C:\commons-net-1.0.0>ant -buildfile build.xml jar Buildfile: build.xml init: [mkdir] Created dir: C:\commons-net-1.0.0\target\lib get-deps: [get] Getting: http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar [get] Getting: http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar [get] Getting: http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar compile: [mkdir] Created dir: C:\commons-net-1.0.0\target\classes [javac] Compiling 103 source files to C:\commons-net-1.0.0\target\classes jar: [jar] Building jar: C:\commons-net-1.0.0\target\commons-net-1.0.0-dev.jar BUILD SUCCESSFUL Total time: 5 minutes 20 seconds C:\commons-net-1.0.0> |
| Автор: LAKERS 13.3.2006, 11:49 | ||
| теперь пытаюсь отправить файл на сервер пишу в коде
первый это remote - правильно, а второе это local - ошибку выдает... как правильно его записать? требует формата java.io.InputStream |
| Автор: LAKERS 13.3.2006, 12:14 |
| попробовал через FileInputStream, но выдает след. ошибку D:\1\jdk\demo>javac HttpNetworking.java HttpNetworking.java:15: Exception java.io.FileNotFoundException must be caught, or it must be declared in the throws clause of this method. FileInputStream fin = new FileInputStream ("c://myr.fd"); ^ HttpNetworking.java:40: Undefined variable: fin ftp.storeFile("myr.fd", fin); ^ 2 errors D:\1\jdk\demo>edit HttpNetworking.java D:\1\jdk\demo> ???????????????????? |
| Автор: Beard 13.3.2006, 12:19 | ||
| "дома все прошло ок, на работе что-то долго все происходило, более 5 минут..." Это потому что долго скачивал: [get] Getting: http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar [get] Getting: http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar [get] Getting: http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar А вот это
надо взять в try/catch блок, или в заголовок метода, где это делается, добавить throws java.io.FileNotFoundException Добавлено @ 12:20 Вобщем - давай код, будем править! |
| Автор: LAKERS 13.3.2006, 13:46 | ||||
я уже поправил по другому и все вроде пошло путем...вот так:
только 2, 5, 6 и 10 строки я не писал, зечем нужна 2, 5 и 6??? да, все получилось, только передал файл на сервак, а он весит не 1.3 метра, как начальный, а 500 К...почему так? |
| Автор: Beard 13.3.2006, 14:14 | ||||||||||
Читай JavaDoc, которые есть, например, в бинарном дистрибе commons-net-1.0.0 - там все прекрасно про это написано. Да и про самое FTP (что за протокол, какие команды...) не плохо было бы почитать, чтоб все вообще было понятно.
По разным причинам (не до конца закачался, например). На сервере-то он корректный? ZIP его берет? проверь, что вот эта строчка возвращает:
Если true, то все должно быть OK. Да и Stream по хорошему надо самому закрывать:
хотя это и не должно сказаться, да и коннекшен к серверу тоже надо в конце закрыть
Посмотри examples, которые есть в сорцах commons-net |
| Автор: LAKERS 13.3.2006, 14:29 | ||
| 5 строка понял зачем нужна была, файл теперь нормального размера... да и передается в секунды, хотя раньше очень долго ждал, минуты 2.... Всем спасибо, теперь будет работать над приемом файлов с сервера...
??? |
| Автор: Beard 13.3.2006, 14:40 | ||
Так и помещай
где file - тот java.io.File, что ты получил из диалога, или String - путь до файла |
| Автор: LAKERS 23.3.2006, 14:12 | ||||||
использую FileDialog
далее я проверяю нажата ли нужная кпопка, если нажата то надо отправить файл на ФТП сервер, как туда вложить выбранный файл из FileDialog? пишу
что надо указать ? F = new File(dialog.getFile()); fis = new FileInputStream (F); input = new FileInputStream (fis); ???????? |
| Автор: Beard 23.3.2006, 14:18 | ||
|
| Автор: LAKERS 23.3.2006, 15:01 | ||
| выдает ошибку... c:\test>javac GridBagLayoutWindow.java GridBagLayoutWindow.java:75: Exception java.io.FileNotFoundException must be cau ght, or it must be declared in the throws clause of this method. input = new FileInputStream (file); ^ 1 error соответсвенно я эти две строки
они у меня находятся в разных {} ??? |
| Автор: LAKERS 23.3.2006, 15:45 |
| не могу выдернуть файл из FileDialog чтобы отправить его через нажатие PUT [code=java] import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; import org.apache.commons.net.ftp.*; public class GridBagLayoutWindow extends Frame implements ActionListener { private TextField tF3 = null; private TextArea textArea = null; private DataInputStream dis = null; private InputStream input; private OutputStream output; private Button b = new Button("Open"); File file; protected void makebutton(String name, GridBagLayout gridbag, GridBagConstraints c) { Button button = new Button(name); gridbag.setConstraints(button, c); add(button); button.addActionListener(this); } public GridBagLayoutWindow(String title) { super(title); // handle frame closing events addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setFont(new Font("Helvetica", Font.PLAIN, 14)); setLayout(gridbag); c.fill = GridBagConstraints.NONE; c.insets = new Insets(5,5,5,5); c.weightx = 1.0; c.anchor = GridBagConstraints.CENTER; TextField tF1 = new TextField("Enter IP", 25); add(tF1); c.gridwidth = GridBagConstraints.REMAINDER; makebutton("OK", gridbag, c); TextField tF2 = new TextField("STATUS", 25); add(tF2); c.gridwidth = GridBagConstraints.REMAINDER; makebutton("GET File", gridbag, c); c.gridwidth = GridBagConstraints.REMAINDER; c.anchor = GridBagConstraints.NORTHEAST; makebutton("PUT File", gridbag, c); tF3 = new TextField(20); add(tF3); add(b); b.addActionListener(this); } //Pressing the Open button triggers an ActionEvent, sent to the application with an invocation of the actionPerformed method. public void actionPerformed(ActionEvent evt) { FTPClient ftp = new FTPClient(); Object sc = evt.getSource(); String cmd = evt.getActionCommand(); if (sc == b) { FileDialog dialog = new FileDialog(this, "Open a file", FileDialog.LOAD); dialog.show(); tF3.setText(dialog.getFile()); File file = new File (dialog.getDirectory(), dialog.getFile()); System.out.println(file.getAbsolutePath()); } if (cmd == "PUT File") { try { input = new FileInputStream (file); ftp.connect("192.168.123.254"); ftp.login("Administrator", "11111"); ftp.setFileType(FTP.ASCII_FILE_TYPE); ftp.enterLocalPassiveMode(); System.out.println("Connected"); ftp.makeDirectory("\\test"); System.out.println("MakeDirectory"); ftp.appendFile("\\test\\1.txt", input); System.out.println("Input OK"); System.out.println("Remote syst |
| Автор: batigoal 23.3.2006, 15:46 |
| FileNotFoundException может быть выброшено при создании FileInputStream(). Добавлено @ 15:48 В смысле - не можешь? |
| Автор: LAKERS 23.3.2006, 16:10 |
| все, решил проблему... |
| Автор: LAKERS 23.3.2006, 22:34 |
| еще, на КПК почему-то текстовые поля у меня минимальной формы, хотя я устанавливаю и тестирую на ПК все идет нормально, размеры 25...почему так может быть? |
| Автор: LSD 23.3.2006, 22:40 |
| Модератор: Пожалуйста, один топик - один вопрос. Создай новую тему, опиши поподробней проблему, что за компоненты как располагаешь и т.д. |