使用文件IO完成,将源文件中的所有内容进行加密(大写转小写、小写转大写)后写入目标文件中,源文件内容不变

实现代码:

#include <myhead.h>

int main(int argc, const char *argv[])
{
	//判断传入的文件个数
	if (argc != 3)
	{
		write(2, "input file error\n", sizeof("input file error\n"));
		return -1;
	}
	//以只读的形式打开源文件
	int srcfd = open(argv[1], O_RDONLY);
	if (srcfd == -1)
	{
		perror("open srcfile error");
		return -1;
	}
	//以只写的形式打开目标文件
	int destfd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0777);
	if (destfd == -1)
	{
		perror("open destfile error");
		return -1;
	}
	//定义搬运工
	char buf[128] = "";

	while (1)
	{
		int src = read(srcfd, buf, sizeof(buf));
		if (src == 0)
		{
			break;
		}
		//大小写转换
		for (int i = 0; i < strlen(buf); i++)
		{
			if (buf[i] >= 'A' && buf[i] <= 'Z')
				buf[i] += 32; //测试一下大写 ABCDEFGHI
			else if (buf[i] >= 'a' && buf[i] <= 'z')
				buf[i] -= 32;
		}
		//将读取的数据全部写入到新文件中
		printf("运行一次\n");
		write(destfd, buf, src);
	}
	printf("拷贝成功\n");
	//关闭文件
	close(srcfd);
	close(destfd);
	return 0;
}

运行结果:

./copy copy.c test.txt
运行一次
运行一次
运行一次
运行一次
运行一次
运行一次
运行一次
运行一次
运行一次
拷贝成功

“加密”文件:

#INCLUDE <MYHEAD.H>

INT MAIN(INT ARGC, CONST CHAR *ARGV[])
{
    //判断传入的文件个数
    IF (ARGC != 3)
    {
        WRITE(2, "INPUT FILE ERROR\N", SIZEOF("INPUT FILE ERROR\N"));
        RETURN -1;
    }
    //以只读的形式打开源文件
    INT SRCFD = OPEN(ARGV[1], o_rdonly);
    IF (SRCFD == -1)
    {
        PERROR("OPEN SRCFILE ERROR");
        RETURN -1;
    }
    //以只写的形式打开目标文件
    INT DESTFD = OPEN(ARGV[2], o_wronly | o_creat | o_trunc, 0777);
    IF (DESTFD == -1)
    {
        PERROR("OPEN DESTFILE ERROR");
        RETURN -1;
    }
    //定义搬运工
    CHAR BUF[128] = "";

    WHILE (1)
    {
        INT SRC = READ(SRCFD, BUF, SIZEOF(BUF));
        IF (SRC == 0)
        {
            BREAK;
        }
        //大小写转换
        FOR (INT I = 0; I < STRLEN(BUF); I++)
        {
            IF (BUF[I] >= 'a' && BUF[I] <= 'z')
                BUF[I] += 32; //测试一下大写 abcdefghi
            ELSE IF (BUF[I] >= 'A' && BUF[I] <= 'Z')
                BUF[I] -= 32;
        }
        //将读取的数据全部写入到新文件中
        PRINTF("运行一次\N");
        WRITE(DESTFD, BUF, SRC);
    }
    PRINTF("拷贝成功\N");
    //关闭文件
    CLOSE(SRCFD);
    CLOSE(DESTFD);
    RETURN 0;
}
 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java输入输出之数据IO流是Java常用的文件读写操作方式之一。在Java,可以使用FileInputStream和FileOutputStream类来进行文件的读写操作。具体步骤如下: 1. 创建FileInputStream对象,用于读取源文件。 2. 创建FileOutputStream对象,用于写入目标文件。 3. 创建BufferedReader对象,用于读取源文件内容。 4. 创建BufferedWriter对象,用于写入目标文件内容。 5. 使用while循环读取源文件内容,直到读取到前三行或文件结束。 6. 将读取到的内容换为大写形式,并写入目标文件。 7. 关闭输入输出流。 下面是一个示例代码,可以将源文件的前三行内容换为大写形式,并写入目标文件: ```java import java.io.*; public class FileToUpper { public static void main(String[] args) { String sourceFile = "/test/a.txt"; // 源文件路径 String targetFile = "/test/a1.txt"; // 目标文件路径 int count = 0; // 计数器,用于记录读取的行数 try { FileInputStream fis = new FileInputStream(sourceFile); FileOutputStream fos = new FileOutputStream(targetFile); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos)); String line; while ((line = br.readLine()) != null && count < 3) { bw.write(line.toUpperCase()); // 将读取到的内容换为大写形式,并写入目标文件 bw.newLine(); // 写入换行符 count++; // 计数器加1 } br.close(); bw.close(); fis.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值