الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية نقل وحذف فايلات من حاسبة الى اخرى

بدأه alionline في 3 يوليو 2011 · 10 رد · 1,061 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عيكم ......

فضلا وليس امرا اخواني المبرمجين

اريد ان انقل ملفات من حاسبة الى اخرى ضمن شبكة محلية لاتحتوي على الانترنيت

علما انه كل حاسبة لديه ايبي واسم مستخدم وكلمة مرور

ووجدت هذه الكود

public static void getDataFiles( String server,String username,String password,
                                     String folder,String destinationFolder ){
    try
    {
      // Connect and logon to FTP Server
      FTPClient ftp = new FTPClient();
      ftp.connect(server);
      ftp.login(username, password);
      System.out.println("Connected to " + server + ".");
      System.out.print(ftp.getReplyString());

      // List the files in the directory
      ftp.changeWorkingDirectory( folder );
      FTPFile[] files = ftp.listFiles();
      System.out.println( "Number of files in dir: " + files.length );
      DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT );
      for( int i=0; i<files.length; i++ )
      {
        Date fileDate = files[ i ].getTimestamp().getTime();

          // Download a file from the FTP Server
          System.out.print( df.format( files[ i ].getTimestamp().getTime() ) );
          System.out.println( "\t" + files[ i ].getName() );
          File file = new File( destinationFolder + 
               File.separator + files[ i ].getName() );
          FileOutputStream fos = new FileOutputStream( file ); 
          ftp.retrieveFile( files[ i ].getName(), fos );
          fos.close();
          file.setLastModified( fileDate.getTime() );

      }

      // Logout from the FTP Server and disconnect
      ftp.logout();
      ftp.disconnect();

    }
    catch( Exception e )
    {
      e.printStackTrace();
    }
  }

لكن لم تفلح

ولكم جزيل الشكر والثواب

وشكرا

تحياتي

#2

طب ايه هى

FTPClient

FTPFile

Software Developer
Mahmoudkelany.com


 

#3
Mahmoud Kelany كتب:

طب ايه هى

FTPClient

FTPFile

هذا دوال الــFtp مع الــjava مستدعاة من المكتبة

commons-net-1.4.1.jar

#4

هل لديك خادم ftp عليه الملفات؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5
علاء الصالحي كتب:

هل لديك خادم ftp عليه الملفات؟

تحياتي

مشكور اخ علاء على السوال

للاسف لا يوجد خادم في windows 7

ولكن للعلم يااخ علاء بعد البحث وجدت

في java FTP وكذلك Java RMI

انه لابد من تصميم برنامجين وهما برنامج يقوم برفع الملف في الserver

وبرنامج ثاني يستقبل الملف في الClient

تحياتي

#6

بالضبط

لكن لماذا أصلاً تستخدم FTP ألا يوجد حلول أخرى

لماذا لا تقوم بتصميم برنامج client/server تركب واحد على الجهاز المراد نقل الملفات منه والآخ على الجهاز الذي تريد نقل الملفات له؟

تحياتي

1
حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

السلام عليكم،

ليس منطقياً أن تنصب خادم FTP على كل جهاز لكي تتشارك الأجهزة هذه الملفات. كل جهاز ويندوز على الشبكة هو خادم للملفات. عندما تجعل Folder متاحاً Shared فانك تجعل من هذا الجهاز خادماً للملفات ولا شك بأنك تستخدم هذه الطريقة لنقل الملفات بين الأجهزة. أجهزة ويندوز تتشارك الملفات عن طريق بروتوكول SMB. واذا كان عندك أجهزة لينكس وعليها برنامج SAMBA الذي هو تطبيق لبرتوكول SMB وهذا يجعله كأي جهاز ويندوز (وأكثر). المهم أنك لست بحاجة لتنصيب أو كتابة خادم فهذا متوفر. ما تحتاج إليه هو مكتبة جافا تتحدث بروتوكول SMB لكي تستطيع نقل الملفات من المجلدات المشاركة. هذه المكتبة هي JCIFS ويمكنك تحميلها من موقع SAMBA. وقد وجدت بعض الكود لاستخدامها هنا.

2
#8

مشكور وجاري التجربة

تحياتي

#9

يااخ cljneophyte

مشكور مرة اخرى على هذه المكتبة الرائعة

ولكن ظهرت لي مشكلة هي ظهور رسالة

تقول(اسم مستخدم غير معرف او باسوررد خاطا)

علما اني اتبعت كافة خطوات المثال وهذه هي الكود

package testnetwork;



import java.util.LinkedList;
import jcifs.Config;
import jcifs.UniAddress;
import jcifs.smb.*;

public class SmbFunction {


private UniAddress domain;
private NtlmPasswordAuthentication authentication;
private UniAddress mydomaincontroller;

    public SmbFunction(){

    }
    //org Function
    public void login(String address, String username, String password) throws Exception {
        setDomain(UniAddress.getByName(address,true));
        setAuthentication(new NtlmPasswordAuthentication(address, username, password));
        SmbSession.logon(getDomain(), authentication);
    }



    public LinkedList<String> getList(String path) throws Exception{
        LinkedList<String> fList = new LinkedList<String>();
        SmbFile f = new SmbFile(path,authentication);
        SmbFile[] fArr = f.listFiles();
        for(int a = 0; a < fArr.length; a++) {
            fList.add(fArr[a].getName());
            System.out.println(fArr[a].getName());
        }

        return fList;

    }

    public boolean checkDirectory(String path) throws Exception {

        if(!isExist(path)){

        System.out.println(path + " not exist");
            return false;
        }

        if(!isDir(path)){
         System.out.println(path + " not a directory");

      return false;

        }

        return true;

    }

    public boolean isExist(String path) throws Exception {
        SmbFile sFile = new SmbFile(path, authentication);

       return sFile.exists();


    }

     public boolean isExist2(String path) throws Exception {
        SmbFile sFile = new SmbFile(path);

       return sFile.exists();


    }


    public boolean isDir(String path) throws Exception {

        SmbFile sFile = new SmbFile(path, authentication);
        return sFile.isDirectory();

    }


    public void createDir(String path) throws Exception {

       SmbFile sFile = new SmbFile(path, authentication);

       sFile.mkdir();


    }


    public void delete(String path) throws Exception {

        SmbFile sFile = new SmbFile(path, authentication);


        sFile.delete();

    }


    public long size(String path) throws Exception {

     SmbFile sFile = new SmbFile(path, authentication);

        return sFile.length();
    }


    public String getFileName(String path) throws Exception{

        SmbFile sFile = new SmbFile(path, authentication);

        return sFile.getName();


    }



    public UniAddress getDomain(){

        return domain;

    }


    public void setDomain(UniAddress domain){

        this.domain = domain;


    }



    public NtlmPasswordAuthentication getAuthentication(){
      return authentication;
    }

    public void setAuthentication(NtlmPasswordAuthentication authentication){

        this.authentication = authentication;

    }


}

وهذا الاستدعاء

  try {

                        smbFunction.login("server","administrator","a");
                       // System.out.println("domain="+smbFunction.getDomain());
                    } catch (Exception ex) {
                       JOptionPane.showMessageDialog(mainPanel,ex.getMessage(),"بسم الله الرحمن الرحيم", busyIconIndex, idleIcon);
                    }

فاذا كان لديكم الحل فايدونا يرحمكم الله

وشكرا

تم تعديل هذه المشاركة بواسطة alionline في 13 يوليو 2011 في 02:10

#10

أنا لم أستخدم المكتبة من قبل ولكن تأكد أنك تستطيع الدخول المجلد من جهاز آخر عن طريق ويندوز إكسبلورر. تالياً جرب ان تستخدم الأسم الكامل للجهاز

\\server name\shared folder

#11
cljneophyte كتب:

أنا لم أستخدم المكتبة من قبل ولكن تأكد أنك تستطيع الدخول المجلد من جهاز آخر عن طريق ويندوز إكسبلورر. تالياً جرب ان تستخدم الأسم الكامل للجهاز

\\server name\shared folder

مشكور اخ cljneophyte

انا اعرف هذة الخاصية في الوندوز ولكن عندما تريد تحديث اكثر

من 20 حاسبة فهذه الطريقة بطيئة جدا

فيكون استخدام هذه المكتبة افضل

لو بس تتضبط معي

تحياتي

ومشكور على الرد

تم تعديل هذه المشاركة بواسطة alionline في 15 يوليو 2011 في 16:14

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…