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

نسخ الملفات مع جافا

مغلق
بدأه ahmed ali alsahli في 13 يناير 2008 · 6 رد · 882 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

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

أرجو أن لا أكون قد أثقلت عليكم يا اخواني بالأسئلة؟ ... عندي سؤال قد حيرني قليلا وهو حول نسخ ملف من مجلد الى مجلد آخر

كتبت كود أو بالأحرى نقلت كود من أحد الدروس من الانترنت, والذي أجده هو رسالة خطأ تقول لي: Access Denied

أولا دعوني أعرض عليكم الكود ومن ثم أرجو من أخواني والذين استخدموا هذه التجربة (نسخ الملفات بجافا) أن لا يبخلوا علينا بالبيان

import java.io.*;
   public class Copy {
		String from,to;
	File file;
	public Copy()
	{
		from = "c:/Earth.jpg";
		to = "d:/Documents/copyfiles/";
		try
		{
			file = new File(from);
		}
		catch(Exception e)
		{
			file = null;
			e.printStackTrace();
			System.out.println("Where is the file?");
		}
				if(file != null)
		{
				try
				{
					BufferedInputStream inStream = new BufferedInputStream(new FileInputStream(from));
					BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(to));
					byte[] bytes=new byte[1024];
					int count = 0;
										while( (count=inStream.read(bytes))!=-1 ){
								outStream.write(bytes,0,count); 
					}
					outStream.close();
					inStream.close();
				}
				catch(Exception e)
				{
					e.printStackTrace();
				}
				System.out.println("File transferred: ");
		}
		else
		{
			System.out.println("no such url");
		}
	}
	public static void main(String[] args) throws IOException {
		new Copy();
			}

}
#2

المشكلة في هذا السطر:

BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(to));

حيث أن هذا السطر ينشئ كائن جديد يشير إلى ملف معين، ولكنك أعطيته to وهي تشير إلى folder وليس ملف، لهذا غير تعريف to إلى التالي:

to = "d:/Documents/copyfiles/Earth.jpg";

وإن شاء الله يعمل معك

لا تنسى الدعاء لي بظهر الغيب

#3

بسم الله الرحمن الرحيم

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

أما الحل الذي أعطيته يا prog_omer فقد اشتغل بشكل صحيح ولله الحمد

زادك الله من فضله

والحمدلله على هذا الجمع الطيب

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

#4

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

عندي سؤال آخر .. وهو إذا كنت أريد أن أنسخ بداخل برنامجي؟

بمعنى أنني لا أريد أن أتقيد بمسار معين, وفي حال نقلت البرنامج إلى مكان آخر يشتغل.

إذا كنت تعرف في الفيجوال بيسك... شيء قريب من app.path

#5
from = "IN/Earth.jpg";
to = "OP/Earth.jpg";

حيث iN و OP عبارة عن فهارس في الكان الذي يوجد به هذه الكلاس

#6

للحصول على المسار الحالي الموجود يه الكلاس

استخدم

System.getProperty(user.dir);

منقطع من حين لاخر

#7

اخي الكريم للتسهيل عليك استخدم هذا الكلاس

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


public class CopyFileUsingByteStream {

  public CopyFileUsingByteStream(String in,String out) {
	FileInputStream fis = null;
	FileOutputStream fos = null;



	try {
	  fis = new FileInputStream(new File(in));

	  File file = new File(out);
	  if (file.exists()) {
		return;
	  }
	  else
		fos = new FileOutputStream(out);



	  int r;
	  while ((r = fis.read()) != -1) {
		fos.write((byte)r);
	  }
	}
	catch (FileNotFoundException ex) {
	return;

	}
	catch (IOException ex) {
	return;

	}
	finally {
	  try {

		if (fis != null) fis.close();
		if (fos != null) fos.close();
	  }
	  catch (IOException ex) {
	  return;

	  }
	}
  }
}

حيث تضع اسم المسار للملف و اسم المسار للملف الذي تريد ان يوضع فيه الملف داخل الباني و هو يقوم بالعمل

mofeedchaar@hotmail.com

هذا الموضوع مغلق.

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