C# 可以不读取原文件数据,直接追加二进制数据吗?

C# 可以不读取原文件数据,直接追加二进制数据吗?,第1张

这样其实并没读文件的具体内容:
FileStream fs = new FileStream("fileName", FileModeAppend);
还有很多重载,具体看vs的说明吧

1、二进制文本使用fopen函数的二进制模式“rb”就可以打开。对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。 C语言里有一系列文件 *** 作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。
2、fopen的函数原型:FILE fopen(const char path,const char mode);
  fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
3、例程:
   #include <stdlibh>

    #include <stdioh>
    int main ()
    {
        FILE  fpPhoto,  fpText,  fpTarget ;
        int     iRead ;
        char    szBuf[100] ;
          
        printf ("请输入第一个文件名(jpg):\n") ;
        gets (szBuf) ;
        fpPhoto = fopen (szBuf, "rb") ;
        printf ("请输入第二个文件名(txt):\n") ;
        gets (szBuf) ;
        fpText = fopen (szBuf, "rb") ;
        printf ("请输入目的文件名(jpg):\n") ;
        gets (szBuf) ;
        fpTarget = fopen (szBuf, "wb") ;
      
        if (!fpPhoto || !fpText || !fpTarget)
        {
            printf ("打开文件失败!\n") ;
            system("pause") ;
            return -1 ;
        }
      
        while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpPhoto)) > 0)
            fwrite (szBuf, 1, iRead, fpTarget) ;
        while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpText)) > 0)
            fwrite (szBuf, 1, iRead, fpTarget) ;
      
        fclose (fpPhoto) ;
        fclose (fpText) ;
        fclose (fpTarget) ;
        return 0 ;
    }

通过一个简单的示例进行讲解(此示例用文本文件进行演示):

#include <stdioh>

#include <stdlibh>

#include <errnoh>

#define FILE_NAME "demotxt" // 文件名称

int main()

{

FILE fp = NULL; // 文件指针

char szAppendStr = "Text";

errno_t eResult;

// 以附加方式打开可读/写的文件, 如果没有此文件则会进行创建,然后以附加方式打开可读/写的文件

eResult = fopen_s(&fp, FILE_NAME, "a+");

// 打开文件失败

if (eResult != 0)

exit(-1);

// 将追加内容写入文件指针当前的位置

fputs(szAppendStr, fp);

// 最后不要忘了,关闭打开的文件~~~

fclose(fp);

return 0;

}

扩展资料

文件的打开和关闭

open()函数的作用是打开文件,其调用格式为: int open(char filename, int access); 该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接。修饰符可以有多个, 但基本模式只能有一个。

open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 close()函数的作用是关闭由open()函数打开的文件, 其调用格式为: int close(int handle); 该函数关闭文件描述字handle相连的文件。

c语言 文件指针名=fopen(文件名,使用文件方式)函数参数说明
作者[fanld] 发表于[2008-11-18 16:10:00]
格式:文件指针名=fopen(文件名,使用文件方式)

参数:
文件名 意义
"C:\\TC\\qwetxt" 文件C:\TC\qwetxt
"qwetxt" 和程序在同一目录下的qwetxt

文件使用方式 意 义
“rt”只读打开一个文本文件,只允许读数据
“wt”只写打开或建立一个文本文件,只允许写数据
“at”追加打开一个文本文件,并在文件末尾写数据
“rb”只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+”  读写打开一个文本文件,允许读和写
“wt+”  读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据
“rb+”  读写打开一个二进制文件,允许读和写
“wb+”  读写打开或建立一个二进制文件,允许读和写
“ab+”读写打开一个二进制文件,允许读,或在文件末追加数据

对于文件使用方式有以下几点说明:

1 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:

r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写

2 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。

3 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。

4 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。

5 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。
如果成功的打开一个文件, fopen()函数返回文件指针, 否则返回空指针(NULL)。由此可判断文件打开是否成功。

可以使用文件追加方式呀!参考代码如下:
byte[] output = new byte[] { 0x00000001, 0x00000010 };
BinaryWriter writer = new BinaryWriter(new FileStream("trytxt", FileModeAppend));
writerWrite(output);
writerClose();

文件
文件的分类:
按照用户角度分:
①设备文件:如显示器(printf)标准输出文件;键盘(scanf)标准输入文件
②普通文件:存放在磁等介质上的文件
按照文件的逻辑结构上分:
①记录文件(有定长记录、不定长记录两种)
②流式文件(由字符数据顺序组成如c语言程序)
按照文件的编码方式:
①文本文件(又称ascii文件,每个字节存放一个ascii码)(c、cpp、h、txt、ini、)(常见的有五种)
②二进制文件(binary file)
文件 *** 作函数:
一、文件的打开:文件指针名=fopen(“path\文件名”,“打开文件方式”)
“文件打开方式”:
rt-只读打开文本文件
wt-只写打开文本文件
at-追加打开文本文件,并在末尾写数据。

rb-只读打开二进制文件
wb-只写打开二进制文件
ab-追加打开二进制文件,并在末尾写数据。

rt+-读写打开文本文件,允许读写
wt+-读写打开或建立一个文本文件,允许读写。
at+-读写打开一个文本文件,允许读或在文件末尾追加数据。

rb+-读写打开二进制文件,允许读写
wb+-读写打开或建立一个二进制文件,允许读写。
ab+-读写打开一个二进制文件,允许读或在文件末尾追加数据。

r+w:可读写文件(具体是二进制文件还是文本文件要看打开文件的扩展名而定)
例如:fp=fopen(“Cdat”,“w+b”)

文件打开模式只有r、w、a、t、b、+、这六个字符拼成。
w:用w打开的文件只能向该文件写入数据(更准确是建立一个新的文件)(即将 信息从程序写入磁盘中)
a:用a打开对我文件只能向已存在的文件中追加信息
①对于文本文件应注意:从程序中读入内存时,要将ASCII码转换成二进制码;而 把文件以文本形式写入磁盘时,要将二进制码转换为ASCII码。
②fopen函数将返回一个文本文件结构的指针(该文件不存在时,返回NULL)
文件的关闭:fclose(fp);(作用强制性将存放在缓中的未满的数据写入到磁盘中, 然后释放文件指针,使其真正写入磁盘中)
fclose(fp);关闭成功时返回0,失败时返回EOR
文件的读写:
读字符函数— fgetc()
调用格式:字符变量=fgetc(文件指针(fp));
函数说明:
读字符时,文件必须以“读”或者“读写”的方式打开
读取的结果也可以不向字符变量赋值。例如fgetc(fp)
每读一个字符文件内部指针向前移动一个字符(文件内部指针不是文件指针,文件内部直镇不需要程序中定义说明由系统自动设置)
返回值:fgetc(fp):成功时函数返回读入的一个字符,若读到文件尾时或者出错时,返回值为“EOF”。
写字符函数—fputc()
调用格式:fputc(字符量(常量或者变量),文件指针(fp))
函数说明:
写字符时,文件可以用“写”“读写”“追加”的方式打开文件
写或者是读写的方式打开文件时,原有的内容将会被清除,从文件首部开始写入字符;若以追加的方式打开文件时,将在文件末尾开始写入字符。
函数的返回值:写入成功时,返回写入的字符;失败时,则会
返回“EOF”
每写入一个字符,“文件内部位置指针”向后移动一个字符
读字符串函数—fgets()
调用格式:fgets(字符数组名,n,文件指针(fp))
函数说明:
N是一个正整数,表示从文件中读取的字符串不超过N-1个字符。
读入最后一个字符后加上字符串结束标志'\0'
读取过程中,遇到换行或者文件结束标志“EOF”(end of file)时,读取字符串结束。
写字符串函数—fputs()
调用格式:fputs(字符串量,文件指针)(字符串量,即可是字符串变量(c中为字符数组),由可是字符串常量)
函数说明:无
///////////////////////////////////////////////////////////////--这部分有点小问题(程序运行不了)
读数据块函数—fread()
调用格式:fread(p,size,n,fp)
函数说明:
P:指向输入/输出数据块的首地址的指针
Size:某类型数据存储空间的字节数(数据项大小)
N:此次从文件中读取的数据项数
Fp:文件指针变量
写数据块函数—frite()
调用格式:fread (p,size,n,fp)
函数说明:
P:指向输入/输出数据块的首地址的指针
Size:某类型数据存储空间的字节数(数据项大小)
N:此次从文件中读取的数据项数
Fp:文件指针变量
注意:fread、fwite函数在调用成功时,函数返回值为n的值,即输出的项数;如果失败,则返回(0)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13375774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存