c/c++ CopyFile,GetFileAttributes复制文件和更改文件属性

通过使用GetFileAttributes 或者GetFileAttributes函数能够获得文件的属性,CreateFile和SetFileAttributes函数可以设置文件的属性。

例子:

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>

void _tmain(int argc, TCHAR* argv[])
{
   WIN32_FIND_DATA FileData;
   HANDLE          hSearch;
   DWORD           dwAttrs;
   TCHAR           szNewPath[MAX_PATH];   

   BOOL            fFinished = FALSE; 

   if(argc != 2)
   {
      _tprintf(TEXT("Usage: %s <dir>\n"), argv[0]);
      return;
   }

// Create a new directory. 

   if (!CreateDirectory(argv[1], NULL))
   {
      printf("CreateDirectory failed (%d)\n", GetLastError());
      return;
   } 

// Start searching for text files in the current directory. 

   hSearch = FindFirstFile(TEXT("*.txt"), &FileData);
   if (hSearch == INVALID_HANDLE_VALUE)
   {
      printf("No text files found.\n");
      return;
   } 

// Copy each .TXT file to the new directory
// and change it to read only, if not already. 

   while (!fFinished)
   {
      StringCchPrintf(szNewPath, sizeof(szNewPath)/sizeof(szNewPath[0]), TEXT("%s\\%s"), argv[1], FileData.cFileName);

      if (CopyFile(FileData.cFileName, szNewPath, FALSE))
      {
         dwAttrs = GetFileAttributes(FileData.cFileName);
         if (dwAttrs==INVALID_FILE_ATTRIBUTES) return; 

         if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
         {
            SetFileAttributes(szNewPath,
                dwAttrs | FILE_ATTRIBUTE_READONLY);
         }
      }
      else
      {
         printf("Could not copy file.\n");
         return;
      } 

      if (!FindNextFile(hSearch, &FileData))
      {
         if (GetLastError() == ERROR_NO_MORE_FILES)
         {
            _tprintf(TEXT("Copied *.txt to %s\n"), argv[1]);
            fFinished = TRUE;
         }
         else
         {
            printf("Could not find next file.\n");
            return;
         }
      }
   } 

// Close the search handle. 

   FindClose(hSearch);
}

时间: 2024-08-29 16:53:45

c/c++ CopyFile,GetFileAttributes复制文件和更改文件属性的相关文章

WinAPI: CopyFile - 复制文件

//声明: CopyFile(   lpExistingFileName: PChar; {源文件}   lpNewFileName: PChar;     {目标文件}   bFailIfExists: BOOL        {如果目标文件存在, True: 失败; False: 覆盖} ): BOOL; //例1: begin   CopyFile('c:\BOOTLOG.TXT', 'c:\temp\BOOTLOG.TXT', True); end; //例2: var   ExistF

分享复制文件,并将文件扩展名更改为.txt

这是我自己的一种做法: 就是将一个文件下的所有.java文件复制到另一个文件,复制成功后,并将刚刚复制过去的文件改成.txt 思路:首先我们要明确我们要获取的源,并明确我们要存储的目的. 然后对源下面的文件进行遍历,如果是.java的文件就进行读取,并复制到目的. 复制成功后需要更改扩展名,那么我们在复制的时候定义一个变量,记录住每一个复制过去的文件名, 并用集合进行存储,在对集合进行遍历,将集合中的文件名的后缀更改为.txt,并进行封装成对象, 在对目的中的文件进行更改即可. package

不同方式复制文件效率的比较

文件拷贝 测试复制文件的大小:4.5MB 1 /* 2 3 * BufferedInputStram&BufferedOutputStream 4 5 * 这两个流类为IO提供了带缓冲区的操作,一般打开文件进行写入 6 7 * 或读取操作时,都会加上缓冲,这种流模式提高了IO的性能 8 9 * 10 11 * 从应用程序中把输入放入文件,相当于将一缸水倒入到另一个 12 13 * 缸中: 14 15 * FileOutPutStream----->write()方法相当于一滴一滴的 16 1

使用IO流对文件夹的复制(文件夹中带有子目录)

当我们要复制带有子目录的文件夹的时候,就必须使用递归,这样才能把全部的文件夹都复制到位 思路和步骤: 对于文件夹的复制,分2种情况               (1)当我们对文件进行遍历的时候,如果目标文件夹下的文件是个标准文件的话,我们就可以直接去做复制的动作,               (2)当目标文件中,是带有文件夹的文件,那么这个时候就需要对文件夹进行递归,直到最后它是个标准文件后,我们在做复制动作 有了上述的2种情况后,那么这个需求,需要提供2种方法,1是对标准文件的复制,2是对带有

JAVA之旅(三十三)——TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录

JAVA之旅(三十三)--TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录 我们继续网络编程 一.TCP 说完UDP,我们就来说下我们应该重点掌握的TCP了 TCP传输 Socket和ServiceSocket 建立客户端和服务端 建立连接后,通过Socket中的IO流进行数据的传输 关闭Socket 同样的,我们的客户端和服务端都是两个独立的应用 我们通过查阅API文档发现,该对象在建立的时候,就可以去连接指定主机,因为tcp是面向连接的,所以在建立socket服务时,

Python - 创建目录,切换目录,创建文件,复制文件,移动文件 ,删除文件夹及文件

# -*- coding: utf-8 -*- """ Created on Mon Jan  9 00:35:43 2017 @author-Weixin: 953558077 """ import os import shutil import time ''' shutil模块的基础功能简介 copyfile( src, dst)      从源src复制到dst中去.当然前提是目标地址是具备可写权限.抛出的异常信息为IOException

4种java复制文件的方式

尽管Java提供了一个可以处理文件的IO操作类,但是没有一个复制文件的方法.复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候.然而有几种方法可以进行Java文件复制操作,下面列举出4中最受欢迎的方式. 1. 使用FileStreams复制 这是最经典的方式将一个文件的内容复制到另一个文件中. 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B. 这是第一个方法的代码: 1 private static void copyFileUs

javase复制文件夹

1 package com.copyfile; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 9 import org.junit.Test; 10 11 public class FileTraverse { 1

node 复制文件

1. node 复制小文件 需要引用模块 require( 'fs' ): 使用 writeFileSync 和 readFileSync 复制小文件,大文件时会拖垮内存,不建议使用. 代码 var fs = require( 'fs' ); function copyfile(src,dir) { fs.writeFileSync(dir,fs.readFileSync(src)); } copyfile( 'D:\\from\\config.json', 'D:\\log\\dd.json'