Переместите файлы в NAS с помощью javacode и переименуйте мои файлы

Доброе утро, ребята,

Я француз, поэтому у меня нет красивого английского ^^ Моя проблема в моем коде, я хочу переместить свои файлы в NAS по этому пути ("\ nas-tps\commun-tps"), но это неправильно, но Netbeans сообщает меня это неправильно (в моем классе Parcourir.java с JFileChooser) Как я могу указать этот путь?

Паркурир моего класса:

package ged;

import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;

/**
 *
 * @author Evan
 */
public class Parcourir {

    public void Enregistrer() throws IOException

        {
                JFileChooser newdestination = new JFileChooser();
                newdestination.setCurrentDirectory(new File("\\nas-tps\commun-tps"));//Chemin
                newdestination.setAcceptAllFileFilterUsed(false);
                newdestination.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
                newdestination.setMultiSelectionEnabled(false);
                newdestination.showOpenDialog(null);
                              
                int dest = newdestination.showOpenDialog(null);
                    if(dest == JFileChooser.APPROVE_OPTION)
                    {
                    File[] fichier02=newdestination.getSelectedFiles();
                        for(int t = 1; t<fichier02.length; ++t)
                        { 
                        fichier02[t].getName();    
                        fichier02[t].getAbsolutePath();
                        }
                    System.out.println("Destination choisie : " + newdestination.getSelectedFile());
                    }
                    else
                    {
                    System.out.println("Aucune destination choisie");
                    }
        }        

}

И во второй раз, я хочу в финале своего кода, я хочу переименовать свой файл с путем моего метода Enregistrer, но это неправильно для Netbeans...

Мой класс GED:

package ged;

import java.awt.Component;
import java.io.File;
import java.util.Scanner;
import javax.swing.JFileChooser;

/**
 *
 * @author Evan
 */
public class GED {
    private static String Nom_Client;
    private static String N_plan;
    private static String ind;
    private static String Reference;
    private static String Typologie;
    
    

    public static void main(String[] args) throws Exception {
        // TODO code application logic here

        System.out.println("****************** TPS Gestionnaire ******************");
        System.out.println(" ");

        System.out.println("Quel fichier choisissez vous ?");

        JFileChooser file = new JFileChooser();
        file.setFileSelectionMode(JFileChooser.FILES_ONLY);
        file.setMultiSelectionEnabled(false);
            int retour = file.showOpenDialog(null);
                if(retour == JFileChooser.APPROVE_OPTION)
                {
                    File[] fichier=file.getSelectedFiles();
                        for( int i = 1; i<fichier.length; ++i)
                        { 
                        fichier[i].getName();    
                        fichier[i].getAbsolutePath();
                        }
                        System.out.println("Fichier choisi : " + file.getSelectedFile().getName());
                }
                else
                {
                    System.out.println("Aucun de fichier choisi");
                }       

        System.out.println (" ");

        System.out.println("Veuillez indiquer le nom du client");
        Scanner name = new Scanner (System.in);
        String Nom_Client = name.nextLine();
        System.out.println("L'entreprise est: " + Nom_Client.toUpperCase());

        System.out.println ("Dans quel sous doussier souhaitez vous mettre votre document ?");
        System.out.println (" ");
        System.out.println ("1." + " PV Contrôle ");
        System.out.println ("2." + " Plan ");

        Scanner sr = new Scanner (System.in);
        int i = sr.nextInt();
        Categorie c = new Categorie (Nom_Client.toUpperCase(),"0","0","0","0");
        if (i==1)
            {
                c.PVControle();
                
            }
        else
            {  
                c.Plan();
                
                
                System.out.println (" Veuillez choisir la nouvelle destination du fichier");
                System.out.println(" ");
                Parcourir dest = new Parcourir();
                dest.Enregistrer();
                File source = file.getSelectedFile(); //Permet de récupérer le chemin du début
                File destination = new File (dest.Enregistrer() + Nom_Client.toUpperCase()+" "+ c.getN_plan()+ " " + "Ind" + " "+ c.getind().toUpperCase() +".pdf"); // Permet d'avoir la nouvelle destination avec le fichier renommé
                source.renameTo(destination); //Pas encore corrigé
                System.out.println(" Votre fichier à été renommé puis déplacé");

            }

    }

}

И категория моего курса:

package ged;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFileChooser;

/**
 *
 * @author Evan
 */
public class Categorie {
    private String Nom_Client;
    private String N_plan;
    private String ind;
    private String Reference;
    private String Typologie;


    public Categorie(String Nom_Client, String N_plan, String ind, String Reference, String Typologie) {
        this.Nom_Client = Nom_Client;
        this.N_plan = N_plan;
        this.ind = ind;
        this.Reference = Reference;
        this.Typologie = Typologie;
    }

    
    public void PVControle () throws IOException{
                   
        int t = 0;
        System.out.println("Vous avez choisit la catégorie PV de contrôle");
        System.out.println("Veuillez indiquer la référence produit");
        Scanner ref = new Scanner (System.in);
        this.Reference = ref.nextLine(); //Permet de demander la reference du plan
        System.out.println("Ainsi que la typologie de production");
        System.out.println("1." + "TÔLES");
        System.out.println("2." + "BOB");
        Scanner typ = new Scanner (System.in);
        this.Typologie = ref.nextLine(); //Permet de demander la typologie
            
        if ( t == 1)
            {
                
                System.out.println (" Vous avez choisit la typologie TÔLES ");
                this.Typologie = "TÔLES";
            }
        
        else 
            {
                System.out.println(" Vous avez choisit la typologie BOB ");
                this.Typologie = "BOB";
            }
        
        System.out.println("Le nom du fichier est: " +Nom_Client + " " + "REF" + " " + Reference.toUpperCase() + " " + "-" + " " + Typologie);    
    }
    
    public void Plan () throws IOException {
        System.out.println("Vous avez choisit la catégorie Plan");        
        System.out.println("Veuillez indiquer le n° Plan");
        Scanner plan = new Scanner (System.in);
        N_plan = plan.nextLine(); //Permet de demander le n°Plan        
        System.out.println ("Ainsi que l'IND");
        Scanner IND = new Scanner (System.in);//Demande de l'IND
        ind = IND.nextLine();        
        System.out.println("Le nom du fichier est: " +Nom_Client + " " + N_plan + " " + "Ind" +" " + ind.toUpperCase());        
        
    }
        
        
    public String getN_plan()
    {
     return N_plan;
    }
    
    public String getind()
    {
        return ind;
    }

}

Вы можете мне помочь, ребята? Это очень важно для меня!

Спасибо за ваше понимание!


person Community    schedule 21.09.2015    source источник
comment
просто конструктивный комментарий: нет необходимости и не рекомендуется размещать код всего вашего проекта, если он не имеет прямого отношения к вопросу   -  person Sharon Ben Asher    schedule 21.09.2015


Ответы (1)


может быть, вы забыли экранировать среднюю обратную косую черту?

newdestination.setCurrentDirectory(new File("\\nas-tps\\commun-tps"));//Chemin

или, может быть, вы забыли экранировать все обратные косые черты? (непонятно, нужны ли вам двойные косые черты в начале пути)

newdestination.setCurrentDirectory(new File("\\\\nas-tps\\commun-tps"));//Chemin

также, насколько я знаю, Java отлично работает с косой чертой в качестве маркера каталога, независимо от специфики ОС. попробуйте путь "/nas-tps/commun-tps" или "//nas-tps/commun-tps"

person Sharon Ben Asher    schedule 21.09.2015
comment
что не работает? какую ошибку вы получаете? как путь NAS выглядит из командной строки? - person Sharon Ben Asher; 21.09.2015
comment
какую ОС вы используете? это виртуальная машина или родная? - person Sharon Ben Asher; 21.09.2015
comment
если это Windows (из-за обратной косой черты), то NAS должен иметь букву, обозначающую раздел - person Sharon Ben Asher; 21.09.2015
comment
Я на IOS Mac, у меня нет ни одной ошибки, но когда я запускаю свою программу, JFileChooser имеет путь =. тогда как я хочу путь nas - person ; 21.09.2015
comment
путь NAS - \\Nas-tps\Commun-tps - person ; 21.09.2015
comment
вы звоните showOpenDialog(null); дважды. и получить результат только со второго раза.... - person Sharon Ben Asher; 21.09.2015
comment
путь "//nas-tps/commun-tps" должен работать нормально. для отладки выполните File f = new File("//nas-tps/commun-tps");, а затем проверьте System.out.println(f.exists()); и System.out.println(f.isDirectory()); - person Sharon Ben Asher; 21.09.2015
comment
Возможно ли, что путь чувствителен к регистру? - person Sharon Ben Asher; 21.09.2015
comment
В моем классе Parcourir я делаю в коде: File f = new File(//nas-tps/commun-tps); ? - person ; 21.09.2015
comment
это означает, что строка не указывает на каталог. Я не знаком с MAC. - person Sharon Ben Asher; 21.09.2015
comment
может быть, это чувствительно к регистру? - person Sharon Ben Asher; 21.09.2015
comment
Но все же... Интересно, почему он не хочет идти.. но я понимаю, что нет. - person ; 21.09.2015
comment
в соответствии с этим: stackoverflow.com /questions/5972026/ путь чувствителен к регистру и пишется заглавными буквами, поэтому попробуйте "//Nas-tps/Commun-tps" - person Sharon Ben Asher; 21.09.2015
comment
Это значит быть чувствительным? - person ; 21.09.2015
comment
ДА. попробуйте точную строку, которую я дал: "//Nas-tps/Commun-tps" - person Sharon Ben Asher; 21.09.2015
comment
Всегда в моей консоли: False False - person ; 21.09.2015
comment
извините, нет идей... :( - person Sharon Ben Asher; 21.09.2015
comment
Нет проблем, ребята, спасибо, что помогаете мне, как вы. Я связался со своим учителем программирования, чтобы помочь мне - person ; 21.09.2015
comment
когда у вас есть ответ, опубликуйте его здесь, чтобы кто-то с похожей проблемой получил решение - person Sharon Ben Asher; 21.09.2015
comment
Почему бы не сделать операцию «Подключить сетевой диск». Windows назначит букву диска, и вы сможете использовать API java.io для работы с этим виртуальным диском. - person simar; 21.09.2015
comment
@simar я добавляю это в свой код: Runtime runtime = Runtime.getRuntime(); runtime.exec (новая строка [] {\\\\Nas-tps\\Commun-tps}); - person ; 22.09.2015
comment
И у меня есть эта ошибка: Исключение в потоке main java.io.IOException: Невозможно запустить программу \\Nas-tps\Commun-tps: error=2, Нет такого файла или каталога в java.lang.ProcessBuilder.start(ProcessBuilder.java :1048) в java.lang.Runtime.exec(Runtime.java:620) в java.lang.Runtime.exec(Runtime.java:485) в ged.GED.main(GED.java:34) - person ; 22.09.2015
comment
Причина: java.io.IOException: error=2, Нет такого файла или каталога в java.lang.UNIXProcess.forkAndExec(собственный метод) в java.lang.UNIXProcess.‹init›(UNIXProcess.java:248) в java. lang.ProcessImpl.start(ProcessImpl.java:134) в java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ... еще 3 Java Результат: 1 @simar - person ; 22.09.2015
comment
Я тоже это сделал, я подключил удаленный диск как диск Z, а затем успешно записал на него. Я не понимаю, почему в вашем коде есть ProcessBuilder. Я использовал простой java.io. Files.copy(c://temp//tmp.xml, z://shared//tmp//tmp.xml). Работает плавно. - person simar; 22.09.2015
comment
Другое дело, если вам не удается скопировать файлы, укажите название модели NAS. Скорее всего, у него запущен демон ftp, ssh, http, который позволит вам загрузить файл. - person simar; 22.09.2015