Writes a string to the end of a file.
Arguments:
- file_name: Include the full path in the file name, and escape any slashes. E.g. "C:\\TEMP\\output.txt". Note that file does not have to exist beforehand, but directory does.
- string: If attempting to write a single line, include a newline character at the end of the string.
Returns 0 on success. On failure, function will raise lr_error_message and return -1.
*/
(1)把字符串写到文件末尾
int lr_append_to_file(char* file_name, char* string) {
int fp; // file pointer
int rc; // return code
int length = strlen(string);
// Check that file_name is not NULL.
if (file_name == NULL) {
lr_error_message("Error. File name is NULL");
return -1;
}
fp = fopen(file_name, "a"); // open file in "append" mode.
if (fp == NULL) {
lr_error_message("Error opening file: %s", file_name);
return -1;
}
rc = fprintf(fp, "%s", string);
if (rc != length) {
lr_error_message("Error writing to file: %s", file_name);
return -1;
}
rc = fclose(fp);
if (rc != 0) {
lr_error_message("Error closing file: %s", file_name);
return -1;
}
return 0;
}
//
// Checks if a file already exists on the filesystem.
// Arguments:
// - file_name: Include the full path in the file name.
// Returns TRUE (1) if file exists and user has read access to the file, otherwise function returns FALSE (0).
(2)检查指定文件是否存在
int lr_file_exists(char* file_name) {
int fp; // file pointer
fp = fopen(file_name, "r+"); // open file in read mode. File must already exist.
if (fp == NULL) {
return FALSE;
} else {
fclose(fp);
return TRUE;
}
}
//
// Saves a file to the hard disk.
// Arguments:
// - file_name: Include the full path in the file name. Note that file must not exist before function is called.
// - file_content: The data to save to the file. Can be binary or string data.
// - file_size: The size/length of the data to save to the file. If it is string data, you can find this using strlen(). If you are saving binary data from a web page, use web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE).
// Returns 0 on success. On failure, function will raise lr_error_message and return -1.
(3)保存文件到磁盘
int lr_save_file(char* file_name, void* file_content, unsigned int file_size) {
int rc; // function return code
int fp; // file pointer
// Check input values
if (file_name == NULL) {
lr_error_message("File name is NULL");
return -1;
} else if (file_content == NULL) {
lr_error_message("File content is NULL");
return -1;
} else if (file_size < 1) {
lr_error_message("Invalid file size: %d", file_size);
return -1;
}
// Does the file already exist?
if (lr_file_exists(file_name) == TRUE) {
lr_error_message("File %s already exists", file_name);
return -1;
}
fp = fopen(file_name, "wb"); // open file in "write, binary" mode.
if (fp == NULL) {
lr_error_message("Error opening file: %s", file_name);
return -1;
}
rc = fwrite(file_content, file_size, 1, fp);
if (rc != 1) {
lr_error_message("Error writing to file. Items written: %d", rc);
return -1;
}
rc = fclose(fp);
if (rc != 0) {
lr_error_message("Error closing file: %s", file_name);
return -1;
}
return 0;
}
使用的例子:
Action()
{
int is_exists=0;
char *str = "string to write!";
char *file= "D:\\test.txt";
is_exists = lr_file_exists( file );
//lr_save_int(is_exists,"File_Exist");
//lr_output_message(lr_eval_string("{File_Exist}"));
if(is_exists)
{
lr_append_to_file(file,str);
}
else
{
lr_save_file(file,str,strlen(str));
}
return 0;
}
在LR的帮助文档中,也有关于文件、目录操作函数的详细介绍: