精华内容
下载资源
问答
  • Java 文件复制

    千次阅读 2019-05-08 21:01:47
    文件复制可能在电脑上直接Ctrl+CCtrl+V就可以把文件和文件里面的信息都复制到选择复制的文件夹,这个过程是很简单的;而在java里面通过代码去实现就不是很简单了,下面我就把我在java中实现复制的过程步骤讲一下:...

             文件复制可能在电脑上直接Ctrl+C和Ctrl+V就可以把文件和文件里面的信息都复制到选择复制的文件夹,这个过程是很简单的;而在java里面通过代码去实现就不是很简单了,下面我就把我在java中实现复制的过程步骤讲一下:

    :Oid代表被复制的文件,New代表要复制到的文件夹;

    第一步:获取文件路径,判断一下New的路径里面有没有这个同名的文件,没有就新建一个;

    第二步:获取Oid下的子目录和子文件名称,如果是目录就到New里面创建目录,并且进行再次调用自身(递归),如果是文件就进行文件内容的复制;

    第三步:建一个字节数组来存储一次读取的数据(文件数据的复制都是先转化为字节类型在进行复制,对于电脑来说图片和视频这些就是一些字符串或者也可以说是数字),然后通过while进行读取和输出;

    第四步:打开流就要进行关闭,还有一点很重要,通过flush方法强制把数据输出,把缓存区就清空了;

    代码部分:

    第一步:调用;

     

    我把复制的主要部分进行了封装,这样就可以在全局使用文件复制,直接通过类就可以调用文件复制的方法;这里就是调用的封装的方法,EncapsulatedClass是封装的类名,copyFile就是文件复制的方法名称,这样封装的好处就是减少代码量和规范写法;

    第二步:

             主要用来获取目录名称和文件名称,和创建文件夹;而文件是不需要创建的因为在数据写入文件的时候它会判断有没有该文件,没有就创建;这里也比较繁琐,因为路径问题需要一定的拼接;而图中的OutByte(in,Out)是用来调用读取数据写入数据的方法,参数是读取和写入的路径;

     

    第三步:

             这一步的代码是用来实现数据的读取和数据的写入;

    byte[]数组是用来存储一次读取的数据,后面的数字是代表一次读取的大小,一般是1024个字节,你也可以进行修改,因为电脑的处理速度是不一样的,如果处理快的电脑可以写大一点可以加快复制的速度,但是电脑处理慢的话写的太大反而速度会变慢,所以可以根据电脑的性能去改变这个值,当然最好就是1024个字节,1024个字节相当于1kb的大小,因为电脑处理时间是于纳秒为单位,即使是1kb一次的读取大小也是很快的;

    while函数是把读取的数据进行写入到指定的文件里面,可以认为它一边读取一边写入文件里面;

    这里要关闭流是因为它不会用完自己关闭,它会一直占据在那里,消耗电脑资源,所以一定要关闭;

     

     

    结果部分:

             这里说的完成复制是指要复制的文件已经复制到指定的文件夹中,这里面可以看到有txt文件,java文件,还有图片和文件,当然图片和视频都是可以可以进行正常的打开和播放的,和源文件没有什么区别;

     

    复制过来文件的目录结构是没有发生改变的,从图片中也可以看到文件后面是有大小的,说明里面数据也是复制过来了;

         这样整个文件复制就是完成的,这样和你在电脑上面直接操作的效果是一样的,只是实现的过程不一样;

    展开全文
  • ubuntu文件复制权限问题

    千次阅读 2018-09-22 16:46:32
    在ubuntu系统下,想将一个文件复制到/usr/share/themes文件夹下,但是复制出错,权限不够。 解决: 提高用户的权限。 ctrl+alt+t 打开终端 输入命令: sudo chmod 777 /usr/share/themes 补充: sudo chmod 600 ...

    问题:
    在ubuntu系统下,想将一个文件复制到/usr/share/themes文件夹下,但是复制出错,权限不够。


    解决:
    提高用户的权限。


    ctrl+alt+t 打开终端

    输入命令:

    sudo chmod 777 /usr/share/themes
    

    在这里插入图片描述

    补充:
    sudo chmod 600 ××× (只有所有者有读和写的权限)
    sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
    sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
    sudo chmod 666 ××× (每个人都有读和写的权限)
    sudo chmod 777 ×××(每个人都有读和写以及执行的权限)

    其中×××指文件名(也可以是文件夹名)


    参考:https://blog.csdn.net/zhangmeimei_pku/article/details/79006480

    展开全文
  • 我试图让我的程序从文件中读取名称列表(例如.txt),然后搜索所选文件夹中的名称并将这些文件复制并粘贴到另一个选定的文件夹中。我的程序运行没有错误,但没有做任何事情:更新的代码:import os, shutilfrom ...

    我试图让我的程序从文件中读取名称列表(例如.txt),然后搜索所选文件夹中的名称并将这些文件复制并粘贴到另一个选定的文件夹中。我的程序运行没有错误,但没有做任何事情:

    更新的代码:import os, shutil

    from tkinter import filedialog

    from tkinter import *

    root = Tk()

    root.withdraw()

    filePath = filedialog.askopenfilename()

    folderPath = filedialog.askdirectory()

    destination = filedialog.askdirectory()

    filesToFind = []

    with open(filePath, "r") as fh:

    for row in fh:

    filesToFind.append(row.strip)

    for file in os.listdir(folderPath):

    if file in filesToFind:

    shutil.copy(file, destination)

    原始代码:import os, shutil

    from tkinter import filedialog

    from tkinter import *

    root = Tk()

    root.withdraw()

    filePath = filedialog.askopenfilename()

    folderPath = filedialog.askdirectory()

    destination = filedialog.askdirectory()

    filesToFind = []

    with open(filePath, "r") as fh:

    for row in fh:

    filesToFind.append(row.strip())

    for file in files:

    if file in filesToFind:

    shutil.copy(file, destination)

    思考?我认为它与最后一个循环有关,但我无法弄清楚。

    展开全文
  • 文件和文件

    万次阅读 多人点赞 2019-08-08 20:16:26
    文件和文件流 1. File类 Java.io.File类可以获取文件以及文件夹的一些基本的属性 常用的方法 文件名称,路径,大小,判断是否存在,删除,创建 // 创建一个文件对象(可以是文件,可以是文件夹) File file = new ...

    文件和文件流

    1. File类

    Java.io.File类可以获取文件以及文件夹的一些基本的属性
    常用的方法 文件名称,路径,大小,判断是否存在,删除,创建

    // 创建一个文件对象(可以是文件,可以是文件夹)
    		File file = new File("e:/java_text.txt");
    		// 基本属性
    		boolean canWriter = file.canWrite();
    		System.out.println("是否可写:" + canWriter);
    		boolean canRead = file.canRead();
    		System.out.println("是否可读:" + canRead);
    		long size = file.length(); // 常用
    		System.out.println("文件大小:" + size);
    		boolean isFile = file.isFile(); // 常用
    		System.out.println("是否是文件:" + isFile);
    		boolean isDirectory = file.isDirectory();
    		System.out.println("是否是文件夹:" + isDirectory);
    		String filename = file.getName(); // 常用
    		System.out.println("文件的名称:" + filename);
    		String absolutePath = file.getAbsolutePath(); // 常用
    		System.out.println("文件的绝对路径:" + absolutePath);
    		String filepath = file.getPath();
    		System.out.println("文件的绝对路径:" + filepath);
    		boolean isExists = file.exists(); // 常用
    		System.out.println("是否存在:" + isExists);
    		boolean isDelete = file.delete(); // 常用
    		System.out.println("是否已经被删除:" + isDelete);
    		boolean isCreate = file.createNewFile();
    		System.out.println("创建了没有:" + isCreate);
    
    

    File类的listFile获取文件夹下面的所有文件内容,可以通过递归调用的方法把某一个文件夹下的所有的文件查询出来

    // 测试文件目录的属性(递归遍历文件夹中所有的文件信息)
    	public static void testDirectoryDeme(File file) {
    		if (file.isDirectory()) {
    			File[] files = file.listFiles();
    			System.out.println("文件夹"+file.getName()+"有"+files.length+"个文件");
    			// 利用for遍历所有的文件
    			for (int i = 0; i < files.length; i++) {
    				File childFile = files[i];
    				if (childFile.isFile()) {
    					// 这是一个文件
    					System.out.println("\t这是一个文件:" + childFile.getName());
    				} else {
    					// 文件夹:继续递归调用
    					testDirectoryDeme(childFile);
    				}
    			}
    		} else {
    			// 这是一个文件
    			System.out.println("\t这是一个文件:" + file.getName());
    		}
    	}
    
    

    2. Files 和 paths是一个工具类,提供了对文件的基本功能的实现在java.nio包下面

    文件的创建,删除,判断是否存在,移动,拷贝. 因为提供了静态的方法,所以不需要创建对象直接调用方法即可
    
    // 如果文件不存在复制
    if (!Files.exists(Paths.get("e:/a/cart1.jpg"))) {
    	// java.nio.Files(文件的工具类) Paths(文件路径工具类)
    	Files.copy(Paths.get("e:/cart1.jpg"), Paths.get("e:/a/cart1.jpg"));
    }
    Files.move(Paths.get("e:/a/cart1.jpg"), Paths.get("e:/a/b/cart1" + ((int) (Math.random() * 100)) + ".jpg"));
    Files.delete(Paths.get("e:/cart1.jpg"));
    
    

    3. 文件流

    文件流的分类:
    根据功能分为:输入流(读取文件) 和 输出流(写入文件)
    根据操作内容:字符流(读取字符数组) 和 字节流(读取字节数组)
    字节输入流,字节输出流,字符输入流,字符输出流
    在这里插入图片描述
    使用字节流实现文件的读取

    //利用字节输入流实现文件的内容读取(inputStream 接口的  FileInputStream )
    	public static void testInputStream() throws Exception{
    		File file = new File("e:/a/file.txt");
    		InputStream is = new FileInputStream(file);
    		if(!file.exists()){
    			System.out.println("文件不存在");
    		}
    		//开始读取文件
    		byte[] temp_bytes = new byte[1024];
    		int size = 0;  //用于记录读取文件的字节个数,如果没有读取任何的内容返回-1
    		//因为文件不可能一次读取完毕,需要循环读取
    		do{ 
    			size =is.read(temp_bytes);
    			if(size!=-1){
    				String info = new String(temp_bytes,0,size,"GBK");
    				System.out.println("读取的内容是:" + info);
    			}
    		}while(size !=-1); 
    		//文件流是必须要关闭的(像水管子一样)
    		is.close(); 
    
    

    利用字节输出流实现文件的写入

    //利用字节输出流实现文件内容的写入(OutputStream 接口的FileOutputStream)
    	public static void testOuputStream() throws Exception{
    		File file = new File("e:/a/file_new.txt");
    		if(file.exists()){
    			file.createNewFile();
    		}
    		//文件写入
    		String info = "这就是我们要写入文件的内容";
    		//创建文件写入对象
    		OutputStream os = new FileOutputStream(file);
    		os.write(info.getBytes());
    		//写入完毕后,关闭
    		os.flush();  //清空缓存区
    		os.close();
    	}
    
    

    利用字节输入流和字节输出流实现文件的拷贝

    //利用字节输入输入输出流,实现文件的复制,为了防止文件名称重复,需要对文件名称重命名
    	public static void testCopy(String filepath) throws Exception
    	{
    		//创建文件对象
    		File file = new File(filepath);
    		//判断文件是否存在,且必须是一个文件而不能是一个文件夹
    		if(!file.exists())
    			throw new Exception("文件不存在");
    		if(file.isDirectory())
    			throw new Exception("只能拷贝文件,不能拷贝文件夹");
    		//默认目标地址就是e:/a 文件夹
    		
    		//开始拷贝
    		//创建一个文件输入流对象,读取文件的内容
    		InputStream is = new FileInputStream(file);
    		//创建一个文件输出流对象,写入文件的内容
    		String filename = getFileName(file.getName());
    		String targetpath="e:/a/"+filename;
    		OutputStream os = new FileOutputStream(targetpath);
    		//利用循环,边读取内容,边写入内容即可
    		byte[] temp_info = new byte[1024];  //利用临时数组保存读取的内容
    		int size = 0; //保存读取的字节个数,如果没有读取到内容返回-1
    		do{
    			//先读取
    			size = is.read(temp_info);
    			//判断是否读取到了文件的内容
    			if(size!=-1){
    				//写入文件
    				os.write(temp_info, 0, size);
    			}
    		}while(size!=-1);
    		
    		//关闭,先关闭输出流,后关闭输入流
    		os.flush();
    		os.close();
    		is.close();
    	}
    	//根据原有的文件名称获取新的文件名称
    	public static String getFileName(String fileName){
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
    		//abc.mp4  ---abc_20190805164520.mp4
    		//根据.分别获取文件名称和扩展名
    		String[] name_infos = fileName.split("\\.");
    		//获取当前日期的字符串
    		Date date = new Date();
    		String dateStr = sdf.format(date);
    		 
    		return name_infos[0]+"_"+dateStr+"."+name_infos[1];
    	}
    
    

    重点是熟练使用FileInputStream 和FileOutputStream 的使用

    // 利用字节流复制某一个文件夹中的所有文件
    	public static void testCopyDirectory() throws Exception {
    		File file = new File("e:/file_source");
    		// 实现复制
    		// 创建文件输入输出流对象
    		InputStream is = null;
    		OutputStream os = null;
    		try {
    			// 遍历这个文件夹下的所有的文件信息
    			File[] files = file.listFiles();
    			for (int i = 0; i < files.length; i++) {
    				File childFile = files[i];
    				// 如果是一个文件就复制
    				if (childFile.isFile()) {
    					is = new FileInputStream(childFile);
    					// 根据原有的文件名称获取新的文件名称
    					String newFileName = getNewFileName(childFile.getName());
    					os = new FileOutputStream("e:/a/b/" + newFileName);
    					byte[] temp_info = new byte[1024];
    					int size = -1;
    					do {
    						// 先读取
    						size = is.read(temp_info);
    						// 后写入(写入的内容多去取决于读取的内容多少)
    						if (size != -1) {
    							os.write(temp_info, 0, size);
    						}
    					} while (size != -1);
    				}
    			}
    		} catch (Exception ex) {
    			throw new Exception(ex);
    		} finally {
    			if (os != null)
    				os.close();
    			if (is != null)
    				is.close();
    		}
    	}
    
    	// 根据原有的文件名称,获取新的文件名称
    	public static String getNewFileName(String oldFileName) {
    		// oldname :上机作业.docx newnmae : 上机作业_20180222.docx;
    		// 根据原有的文件名称获取文件名字和文件的类型
    		int index = oldFileName.lastIndexOf(".");
    		if (index == -1) {
    			return oldFileName;
    		}
    		// 获取文件名: 上机作业
    		String name = oldFileName.substring(0, index);
    		// 获取文件类型: docx
    		String type = oldFileName.substring(index + 1);
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
    		Date date = new Date();
    		String formatstr = sdf.format(date);
    		// 上机作业_20180222.docx;
    		return name + "_" + formatstr + "." + type;
    	}
    
    

    使用对象输入输出流实现对象的序列化和反序列化

    public static void testObjectInputStream() throws Exception{
    		File file = new File("e:/a/stu.txt");
    		InputStream is = new FileInputStream(file);
    		ObjectInputStream ois = new ObjectInputStream(is);
    		List<Student>  stuList= (List<Student>)ois.readObject(); 
    		ois.close();
    		is.close();
    		
    		for(Student stu: stuList){
    			System.out.println(stu);
    		}
    	}
    	//对象序列化(实现JAVA对象的保存和读取 ObjectInputStream)
    	public static void testObjectOutputStream()  throws Exception{
    		Student stu3 = new Student("赵丽丽","女","河北廊坊");
    		stuList.add(stu3);
    		//把集合保存到文件中 
    		File file = new File("e:/a/stu.txt");
    		OutputStream os = new FileOutputStream(file);
    		ObjectOutputStream oos = new ObjectOutputStream(os);
    		oos.writeObject(stuList);
    		oos.flush();
    		oos.close();
    		os.close();
    		
    	}
    
    

    字符流的读取和写入(只能读取字符文件的信息)

    //使用字符流读取文件
    	public static void testReader() throws Exception{
    		//创建文件对象
    		File file = new File("e:/a/file.txt");
    		//创建字符输入流对象
    		Reader reader = new FileReader(file);
    		//创建字符输出流对象
    		File file2 = new File("e:/a/b/file_3.txt");
    		Writer writer = new FileWriter(file2);
    		char[] temp = new char[1000];
    		int size =0;
    		//通过循环边度编写
    		do{
    			size= reader.read(temp);  //读取字符内容
    			if(size!=-1)
    			{
    				writer.write(temp, 0, size);
    			}
    		}while(size!=-1);
    		//关闭
    		writer.flush();
    		writer.close();
    		reader.close();
    	}
    
    

    释放资源的新方法

    //新的关闭资源的方法
    		//try(  定义必须要关闭的对象; ){}catch(Exception ex){}; 
    		// 创建输出流对象
    		try(	OutputStream os = new FileOutputStream(FILE_PATH);
    				ObjectOutputStream oos = new ObjectOutputStream(os); ) {
    
    			oos.writeObject(stuList);
    		} catch (Exception e) {
    			throw new Exception(e);
    		} 
    
    

    4. 线程的状态

    初始状态(创建了对象)
    可运行状态(调用了start方法)
    运行状态(调用了run方法)
    阻塞状态 (调用了seleep,join,wait方法)
    终结状态 (运行完毕)
    在这里插入图片描述

    5. 线程的常用方法

    Start() 启动方法 表示线程进入了可运行状态
    Seleep(int) 随眠方法,当前线程进入阻塞状态,在一定时间以后苏醒
    Join() 方法 被调用者优先执行,执行完毕后当前线程在执行(阻塞的的是当前线程)
    Wait() 方法 当前线程进入阻塞状态,一直到对方唤醒自己才可以继续执行
    notifyAll()唤醒被阻塞的线程
    需要注意:wait(),notify()两个方法是Object类提供的

    package com.xja.sxnd.filedemo;
    public class ThreadDemo {
    
    	public static void main(String[] args) {
    		MyThread mt = new MyThread();
    		MyRunable mr = new MyRunable();
    		Thread thread = new Thread(mr);
    		mt.start();
    		thread.start();
    		for(int i = 0;i< 50;i++){
    			if(i == 20){
    				try{
    					//主线程执行到20的时候,先让第一个线程执行完毕,然后主线程在接着执行
    				mt.join(); 
    				}catch(Exception ex){
    					ex.printStackTrace();
    				}
    			}
    			System.out.println("主线程中的内容:" +i);
    		}	
    	}
    }
    class MyThread extends Thread
    { 
    	@Override
    	public void run() {
    		 for(int i =0;i< 50;i++){
    			 try{
    			 if(i==20)
    				 Thread.sleep(500); //停止运行0.5秒,时间到了以后自动执行
    			 }catch(Exception ex){
    				 ex.printStackTrace();
    			 }
    			 System.out.println("第一个线程的对象:" +i);
    		 }
    	}
    }
    class MyRunable implements Runnable{
    	@Override
    	public void run() {
    		 for(int i =0;i< 50;i++){
    			 System.out.println("第二个线程的对象:"+i);
    		 }
    	}	
    }
    
    

    .

    6. 线程的死锁

    如果两个线程同时调用对方线程的JOIN方法,互相希望对方先运行就会出现死锁的问题

    public class MyRunnable implements Runnable {
    	public Thread myThread;
    	@Override
    	public void run() {
    		try {
    			for (int i = 0; i < 100; i++) { 
    				Thread.sleep(10); 
    				if(i == 5){
    					System.out.println("MyRunnable运行到了5,也休息,让Thread先走");
    					myThread.join();
    				}
    				System.out.println("第二个线程:" + i);
    			}
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    	} 
    }
    
    public class MyThread extends Thread {
    	public Thread myRun;
    	@Override
    	public void run() {
    		try {
    			for (int i = 0; i < 10; i++) { 
    				Thread.sleep(10); 
    				
    				if(i==5){
    					System.out.println("Thread 运行到了5 就需要对方先走");
    					myRun.join();
    				}
    				System.out.println("第一个线程的内容:" + i);
    			}
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    	} 
    }
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		try { 
    			// 创建一个线程对象
    			MyThread myThread = new MyThread();
    			// 创建第二个线程
    			MyRunnable myRunn = new MyRunnable(); 
    			Thread thread = new Thread(myRunn); 
    			// 启动线程 启动线程不能直接调用run 只能调用start 
    			myThread.myRun = thread;
    			myRunn.myThread = myThread;
    			 
    			myThread.start();
    			thread.start();
    }
    
    

    7. 线程的同步

    StringBuilder和StringBuffer ArrayList 和vector HashMap 和HashTable

    当两个线程同时操作同一个对象的时候,因为两个线程互相影响对方的结果,导致数据不统一,这种现象称之为线程不同步
    例如:银行卡存取钱的问题。(两种方式操作一个账户)

    public class Card {
    	private int balance =500;
    	public void takeMoney(int money){
    		if(balance>money){
    			System.out.println("取钱之前的余额:" + balance); 
    			int temp_balance = balance - money;
    			balance = temp_balance;
    			System.out.println("取钱之后的余额:" + balance);
    		}
    	}
    	public void saveMoney(int money){
    		System.out.println("存钱之前的余额:" + balance); 
    		int temp_balance = balance + money;
    		balance = temp_balance;
    		System.out.println("存钱之后的余额:" + balance);	
    	}
    }
     
    public class ThreadDemo {
    	public static void main(String[] args) {
    		Card card = new Card();
    		MyThread mt = new MyThread(card);
    		MyRunable mr = new MyRunable(card);
    		Thread thread = new Thread(mr);
    		mt.start();
    		thread.start();
    		System.out.println("程序结束");
    	}
    }
    class MyThread extends Thread
    { 
    	private Card card;
    	public MyThread(Card card){
    		this.card = card;
    	}
    	@Override
    	public void run() { 
    		 for(int i =0;i< 10;i++){ 
    			 card.takeMoney(50);
    		 } 
    	} 
    }
    class MyRunable implements Runnable{
    	private Card card;
    	public MyRunable(Card card){
    		this.card = card;
    	}
    	@Override
    	public void run() { 
    		 for(int i =0;i< 10;i++){ 
    			card.saveMoney(50);
    		 } 
    	}	
    }
    
    

    通过synchronized关键字修饰方法就是线程同步的方法,线程同步的方法要求同一个对象同时只能调用一个方法

    public class Card {
    	private int balance = 500;
    	public void takeMoney(int money) {
    		synchronized (this) {
    			if (balance > money) {
    				System.out.println("取钱之前的余额:" + balance);
    				int temp_balance = balance - money;
    				balance = temp_balance;
    				System.out.println("取钱之后的余额:" + balance);
    			}
    		}
    	}
    
    	public void saveMoney(int money) {
    		synchronized (this) {
    			System.out.println("存钱之前的余额:" + balance);
    			int temp_balance = balance + money;
    			balance = temp_balance;
    			System.out.println("存钱之后的余额:" + balance);
    		}
    	}
    }
    
    

    8. 线程的经典案例(生产者和消费者)

    public class Card {
    	private int balance = 500;
    
    	public synchronized void takeMoney(int money) throws Exception {
    		if (balance -money<0) {
    			System.out.println("家里没有钱了,需要减少消费");
    			this.wait();
    			return;
    		}
    		System.out.println("取钱之前的余额:" + balance);
    		int temp_balance = balance - money;
    		balance = temp_balance;
    		System.out.println("取钱之后的余额:" + balance);
    
    		// 一旦我花费了钱,就可以让生成者继续生成
    		this.notify();
    	}
    
    	public synchronized void saveMoney(int money) throws Exception {
    		// 如果挣钱的足够,则需要休息,让消费者消费
    		if (balance > 700) {
    			System.out.println("钱以够多了,可以休息一下");
    			this.wait();
    			return;
    		}
    		System.out.println("存钱之前的余额:" + balance);
    		int temp_balance = balance + money;
    		balance = temp_balance;
    		System.out.println("存钱之后的余额:" + balance);
    		// 一旦有钱就可以让消费者消费
    		this.notifyAll();
    	}
    }
    
    
    展开全文
  • 电脑中复制的原理是什么,到底是怎样生成的一个一样文件,想知道一个像DNA的复制那样的解释。
  • 使用Java语言,修改一个文件的名称,包括文件类型啥的。... * 重命名一个文件:将原来文件直接修改 */ private static void testRenameFile() { String filePath = "D:/test/我是.conf"; try { File src = new
  • 事情是这样的,我在linux ...结束后我对两个文件进行对比,发现副本比原件小100多个字节,查看各个段的大小也没发现什么不同,但是最后的总大小就是不一样。而且对副本chmod()之后,同样能够运行。 着是怎么回事呢??
  • 当然不是的,拷贝文件(cp)会重新创建一个文件并且复制相同的内容,占用新的空间,新的inode,这是两个文件。而硬链接实际上是增加了原来文件的count,并创建了一个连接,当你删除一个源文件或者一个硬链接后,...
  • Vmware虚拟机安装完之后有的时候需要挪动、备份虚拟机文件。比如,从公司电脑复制到家里电脑;...一、直接复制文件 就是直接复制主机磁盘下对应的虚拟机文件到要备份的目录或其他机器中,下次使用的时...
  • scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only ...
  • 批处理命令批量复制文件并重命名

    千次阅读 2019-06-03 16:13:58
    工作中如果需要把一个文件复制成N个内容一样且名称不一样文件,可以使用批处理命令实现 步骤如下: 1、如现有文件名称为:test001.ini 文件 2、创建一个文件名称列表 FileList.txt,2种方式可以创建 1)是可以...
  • 转自这里 https://blog.csdn.net/FX677588/article/details/530967021. 安装说明 ...实际上,做法一样,本人理解错了。下面介绍一下本人的实践,操作实现虚拟机VMware上Linux与windows互相自由复制与粘贴,可以...
  • 前几章我们所说的命令都是针对文件和文件夹,一些常用操作。今天我们来学习特殊一点的文件"链接文件",这一章节会告诉大家什么是链接文件,以及链接文件有几种类型,有什么区别,在什么地方使用到。链接文件之前在...
  • 自己写的资源管理器的程序,使用拷贝命令对多个文件进行复制,然后在其他目录进行粘贴,但是出现了一种情况,在不同的机器上,粘贴之后的文件排序是不一样的,这是怎么回事?
  • cp复制命令 cp命令复制文件从一个位置到另一位置。如果目的地文件存在,将覆复写该文件; 如果目的地目录存在,文件将复制到该目录下 (目录不会被复写)。 语法: 语法是 cp [命令开关]… SOURCE DEST cp [OPTIONS]… ...
  • C# FileStream复制文件

    千次阅读 2016-07-01 14:40:11
    每次复制文件的一小段,以节省总内存开销。当然,本机复制也可以采用.NET内部的System.IO.File.Copy方法。 FileStream读取文件的时候,是先讲流放入内存,经Flash()方法后将内存中(缓冲中)的数据写入文件。如果...
  • 首先,创建一个测试目录用来测试,以下我在Win10...现在我们通过以下DOS命令来查找出该测试文件夹下所有PDF文件(包括一、二级子目录中的),并复制到桌面的另一个文件夹(此处,我在桌面创建了一个copy文件夹用以存...
  • 文件复制到FTP服务器时发生错误。 的解决办法

    万次阅读 多人点赞 2017-12-05 11:00:38
    《 将文件复制到FTP服务器时发生错误 》 问题 : 将文件复制到FTP服务器时发生错误。请检查是否有权限访问该文件夹。如下图: 关于这个文件夹访问权限问题呢,我觉得主要是字符编码在作怪,就像Mysql...
  • 1:1 格拉摩根的洛斯里克城、有一个狗头人、名叫唯一丢人、是Paradox的伯爵、任天堂的主宰、育碧的bug、波兰蠢驴的打桩机。...在那里有产品的两个需求、抓文件时间信息、系统移植、当草履虫的神谕。1...
  • Windows系统在安装虚拟机centos系统之后,如何进行两者之间的文件传输互操作,或者如何在Windows端使用Xshell对Linux端进行远程操作?使用centos的文件上传下载小工具,可以快速的帮助我们从本地上传文件至Linux...
  • cp aaa.txt bbb.txt 将 aaa.txt文件复制(已存在),并命名为 bbb.txt文件 cp -r aaa bbb 将文件夹aaa复制(已存在),并命名为 bbb文件夹 解释:-r 这个参数是递归的意思 cp -r ./d1 ./d2 将当前文件夹下的d1文件夹...
  • 我们知道一般我们连接远程桌面,比如服务器等等上传电脑上的数据,都会用到FTP上传工具,那么有没什么方法实现远程桌面如何复制本地电脑上的文件呢?下面小编与大家分享下,实现方法,其实很简单,只需要简单设置下...
  • 文件复制、删除移动命令  cp命令  该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大。  语法: cp [选项] 源文件或目录 目标文件或目录  ...
  • 创建文件命令:touch命令 功能说明:改变文件或目录时间。 语 法:touch [-acfm][-d ][-r ][-t ] [--help] [--version][文件...补充说明:使用touch指令可更改文件或目录的日期时间,包括存取时间更改时间。 复制
  • Linux - 文件复制后大小不一致的问题

    千次阅读 2018-11-15 19:27:16
    问题:通过cp或者rsync传输文件后,通过du -s查看到的体积,前后不一致。 原因:https://stackoverflow.com/questions/10364999/file-size-changes-when-using-cp 为了验证文件传输的正确性,可选用下列方法之一 ...
  • 如何将大文件复制到U盘?

    千次阅读 2021-04-28 15:22:37
    U盘的文件系统主要有NTFS、FAT16、FAT32三种形式,三种形式对应单个文件的大小也是不一样的,分别如下: NTFS:最大文件2TB FAT16:最大文件2GB FAT32:最大文件4GB 一般U盘默认的是FAT32,今天我们主要考虑将U盘...
  • scp 复制文件或目录到本地或远端

    万次阅读 2019-07-30 16:49:16
    复制的目标可以是文件或目录,可以是远端或本地的目标,目录的话要在 scp 后加 -r 参数 复制存储的目录可以是远端或本地,同时也可以复制的过程中重命名,等会举例说明 2.本地到远端 scp test.py ro...
  • ubuntu下复制文件

    千次阅读 2017-08-20 01:34:15
    ubuntu下复制文件 1.在服务器上的文件复制: cp 源文件 目的文件 cp 源文件 目的文件夹 2.从一台服务器上拷贝到另一台服务器 scp username@ip:directory 本台服务器的路径 3.从硬盘拷贝文件到服务器...
  • linux复制指定目录下的全部文件到另一个目录中 复制指定目录下的全部文件到另一个目录中 文件及目录的复制是经常要用到的。linux下进行复制的命令为cp。 假设复制源目录 为 dir1 ,目标目录为dir2。怎样才能将dir1下...
  • linux复制文件到指定的文件夹

    千次阅读 2018-08-08 16:13:07
    copy命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。  语法: cp [选项] 源文件或目录 目标文件或目录  说明:该命令把指定的源文件复制到目标文件或把...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 735,213
精华内容 294,085
关键字:

复制的文件和原来文件是一样的吗