⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file_06.cc

📁 这是一个从音频信号里提取特征参量的程序
💻 CC
字号:
// file: $isip/class/system/File/file_06.cc// version: $Id: file_06.cc,v 1.10 2000/10/11 20:28:36 duncan Exp $//// system include files//#include <sys/stat.h>#include <errno.h>#include <string.h>#include <sys/stat.h>#include <unistd.h>// isip include files//#include "File.h"#include <SysString.h>#include <Console.h>// method: remove//// arguments://  const unichar* filename: (input) file to delete//// return: a boolean value indicating status//// delete the file from disk//boolean File::remove(const unichar* filename_a) {    SysString temp(filename_a);    // call the master function  //  return remove(temp);}// method: remove//// arguments://  const SysString& filename: (input) file to delete//// return: a boolean value indicating status//// delete the file from disk. note that the error handling calls are// wrapped to not be executed if the error handler says we are already// exiting. this is because the exit method attempts to delete// temporary files and we don't want to get caught in an infinite// loop.//boolean File::remove(const SysString& filename_a) {    SysString full_name;  // see if we can expand the filename  //  if (!Integral::expandName(full_name, filename_a)) {    if (!Error::isExiting()) {      return Error::handle(name(), L"remove", Error::FILE_NOTFND,			   __FILE__, __LINE__, Error::WARNING);    }  }  // remove the file. we must use the :: here to override our  // File::rename() to access the system libraries remove()  //  if (::remove((char*)(byte*)full_name) != 0) {    if (!Error::isExiting()) {      return Error::handle(name(), L"remove", Error::SYS_CALL,			   __FILE__, __LINE__, Error::WARNING);    }  }  // exit gracefully  //  return true;}// method: rename//// arguments://  const unichar* old_filename: (input) file to delete//  const unichar* new_filename: (input) move to this filename//// return: a boolean value indicating status//// rename a file from old_filename to new_filename//boolean File::rename(const unichar* old_filename_a,		     const unichar* new_filename_a) {  SysString temp0(old_filename_a);  SysString temp1(new_filename_a);  // call the master function  //  return rename(temp0, temp1);}// method: rename//// arguments://  const SysString& old_filename: (input) file to delete//  const SysString& new_filename: (input) move to this filename//// return: a boolean value indicating status//// rename a file from old_filename to new_filename//boolean File::rename(const SysString& old_filename_a,		     const SysString& new_filename_a) {  SysString old_fn;  SysString new_fn;    // see if we can expand the filename  //  if (!Integral::expandName(old_fn, old_filename_a)) {    return Error::handle(name(), L"rename", Error::FILE_NOTFND,			 __FILE__, __LINE__, Error::WARNING);  }    if (!Integral::expandName(new_fn, new_filename_a)) {    return Error::handle(name(), L"rename", Error::FILE_NOTFND,			 __FILE__, __LINE__, Error::WARNING);  }  // rename the file. we must use the :: here to override our  // File::rename() to access the system library's rename()  //  if (::rename((char*)(byte*)old_fn, (char*)(byte*)new_fn) != 0) {    return Error::handle(name(), L"rename", Error::SYS_CALL,			 __FILE__, __LINE__, Error::WARNING);  }  // exit gracefully  //  return true;}// method: exists//// arguments://  const unichar* filename: (input) filename on disk//// return: a boolean value indicating status//// check if filename exists//boolean File::exists(const unichar* filename_a) {    SysString temp(filename_a);    // call the master function  //  return exists(temp);}// method: exists//// arguments://  const SysString& filename: (input) filename on disk//// return: a boolean value indicating status//// check if filename exists//boolean File::exists(const SysString& filename_a) {    // see if we can expand the filename  //  SysString fn;  if (!Integral::expandName(fn, filename_a)) {    return Error::handle(name(), L"exists", Error::FILE_NOTFND,			 __FILE__, __LINE__, Error::WARNING);  }    // there are two ways we can do this. first, we can try to open the  // file and see if it exists. secondly we can use the stat function  // to find out information about the pathname. the latter is nice  // since it also works on directories, but the former may be more  // portable.  //#ifdef ISIP_FILE_OPEN_TEST  // if we can open the file, then it exists. we have to do this by  // hand instead of by calling the open method because we don't want  // to error off.  //  file* fp;  fp = ::fopen((char*)(byte*)fn, sys_read_only);    // if null file pointer, it doesn't exist  //  if (fp == (file*)null) {    return false;  }  // close the file  //  ::fclose(fp);#else  // call the system function  //  struct stat buf;  if (::stat((char*)(byte*)fn, &buf) != 0) {    // output debug message    //    if (debug_level_d > Integral::NONE) {      SysString err_msg((byte*)strerror(errno));      SysString output(fn);      output.concat(L": ");      output.concat(err_msg);      Console::put(output);    }        // return false    //    return false;  }  #endif  // exit gracefully  //  return true;}// method: mkdir//// arguments://  const unichar* dir_name: (input) dir_name on disk//// return: a boolean value indicating status//// make the specified directory//boolean File::mkdir(const unichar* dir_name_a) {    SysString temp(dir_name_a);    // call the master function  //  return mkdir(temp);}// method: mkdir//// arguments://  const SysString& dir_name: (input) dir_name on disk//// return: a boolean value indicating status//// make the specified directory//boolean File::mkdir(const SysString& dir_name_a) {    // see if we can expand the dir_name  //  SysString dir;  if (!Integral::expandName(dir, dir_name_a)) {    return Error::handle(name(), L"mkdir", Error::FILE_NOTFND,			 __FILE__, __LINE__, Error::WARNING);  }    // always create new directories with full permissions. this will,  // of course, be modified by the users umask if they desire privacy.  //  mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;  // call the system function  //  if (::mkdir((char*)(byte*)dir, mode) != 0) {    return Error::handle(name(), L"mkdir", Error::SYS_CALL,			 __FILE__, __LINE__, Error::WARNING);  }    // exit gracefully  //  return true;}// method: rmdir//// arguments://  const unichar* dir_name: (input) directory to remove//// return: a boolean value indicating status//// remove the specified directory//boolean File::rmdir(const unichar* dir_name_a) {  SysString temp(dir_name_a);    // call the master function  //  return rmdir(temp);}// method: rmdir//// arguments://  const SysString& dir_name: (input) directory to remove//// return: a boolean value indicating status//// remove the specified directory//boolean File::rmdir(const SysString& dir_name_a) {  // see if we can expand the dir_name  //  SysString dir;    if (!Integral::expandName(dir, dir_name_a)) {    return Error::handle(name(), L"rmdir", Error::FILE_NOTFND,			 __FILE__, __LINE__, Error::WARNING);  }    // call the system function rmdir  //  if (::rmdir((char*)(byte*)dir) != 0) {    return Error::handle(name(), L"rmdir", Error::SYS_CALL,			 __FILE__, __LINE__, Error::WARNING);  }    // exit gracefully  //  return true;}// method: compare//// arguments://  const unichar* file1: (input) first filename//  const unichar* file2: (input) second filename//// return: boolean value//// compare two files on disk and test for binary equivalence//boolean File::compare(const unichar* file1_a, const unichar* file2_a) {  // make strings  //  SysString file1(file1_a);  SysString file2(file2_a);  // compare them  //  return compare(file1, file2);}// method: compare//// arguments://  const SysString& file1: (input) first filename//  const SysString& file2: (input) second filename//// return: boolean value//// compare two files on disk and test for binary equivalence//boolean File::compare(const SysString& file1_a, const SysString& file2_a) {  // declare local variables  //  File fp1;  File fp2;  // open the files  //  if (!fp1.open(file1_a, READ_ONLY, BINARY)) {    return Error::handle(name(), L"compare", Error::IO, __FILE__, __LINE__);  }  if (!fp2.open(file2_a, READ_ONLY, BINARY)) {    fp1.close();    return Error::handle(name(), L"compare", Error::IO, __FILE__, __LINE__);  }  // declare buffers  //  static byte buf1[BUF_SIZE];  static byte buf2[BUF_SIZE];  // initialize variable so as to enter loop  //  long nread1 = 1;  long nread2 = 0;    // loop over the entire file  //  while (nread1 > 0) {    nread1 = fp1.read(buf1, sizeof(byte), BUF_SIZE);    nread2 = fp2.read(buf2, sizeof(byte), BUF_SIZE);    // compare lengths    //    if (nread1 != nread2) {      fp1.close();      fp2.close();      return false;    }    // compare the buffer contents    //    if (MemoryManager::memcmp(buf1, buf2, sizeof(byte) * nread1) != 0) {      fp1.close();      fp2.close();      return false;    }  }  // close the files  //  fp1.close();  fp2.close();    // exit gracefully: they must be equal  //  return true;}// method: size//// arguments://  const unichar* name: (input) filename//// return: size of the file in bytes//// determine the size of the given file//long File::size(const unichar* name_a) {  SysString temp(name_a);    // call the master function  //  return size(temp);}// method: size//// arguments://  const SysString& name: (input) filename//// return: size of the file in bytes//// determine the size of the given file//long File::size(const SysString& name_a) {  // local variables  //  File fp;  long tsize = -1;  // we don't want this file to be opened with retry  //  fp.setOpenRetry(0, 1);    // see if we can open the file  //  if (fp.open(name_a)) {    tsize = fp.size();  }  // close the file  //  fp.close();    // exit gracefully  //  return tsize;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -