利用字节文件输入输出流,编写程序完成文件的读,写,复制功能。

利用字节文件输入输出流,编写程序完成文件的读,写,复制功能。,第1张

import javaioBufferedReader;

import javaioFile;

import javaioFileInputStream;

import javaioFileReader;

import javaioIOException;

import javaioInputStream;

import javaioInputStreamReader;

import javaioRandomAccessFile;

import javaioReader;

/

多种方式读文件内容。 按字节读取文件内容、按字符读取文件内容、按行读取文件内容、随机读取文件内容

/

public class ReadFromFile

{

public static void main(String[] args)

{

String fileName = "C:/temp/newTemptxt";

ReadFromFilereadFileByBytes(fileName);

ReadFromFilereadFileByChars(fileName);

ReadFromFilereadFileByLines(fileName);

ReadFromFilereadFileByRandomAccess(fileName);

}

/

以字节为单位读取文件,常用于读二进制文件,如、声音、影像等文件。

@param fileName

文件的名

/

public static void readFileByBytes(String fileName)

{

File file = new File(fileName);

InputStream in = null;

try

{

Systemoutprintln("以字节为单位读取文件内容,一次读一个字节:");

// 一次读一个字节

in = new FileInputStream(file);

int tempbyte;

while ((tempbyte = inread()) != -1)

{

Systemoutwrite(tempbyte);

}

inclose();

}

catch (IOException e)

{

eprintStackTrace();

return;

}

try

{

Systemoutprintln("以字节为单位读取文件内容,一次读多个字节:");

// 一次读多个字节

byte[] tempbytes = new byte[100];

int byteread = 0;

in = new FileInputStream(fileName);

ReadFromFileshowAvailableBytes(in);

// 读入多个字节到字节数组中,byteread为一次读入的字节数

while ((byteread = inread(tempbytes)) != -1)

{

Systemoutwrite(tempbytes, 0, byteread);

}

}

catch (Exception e1)

{

e1printStackTrace();

}

finally

{

if (in != null)

{

try

{

inclose();

}

catch (IOException e1)

{

}

}

}

}

/

以字符为单位读取文件,常用于读文本,数字等类型的文件

@param fileName

文件名

/

public static void readFileByChars(String fileName)

{

File file = new File(fileName);

Reader reader = null;

try

{

Systemoutprintln("以字符为单位读取文件内容,一次读一个字节:");

// 一次读一个字符

reader = new InputStreamReader(new FileInputStream(file));

int tempchar;

while ((tempchar = readerread()) != -1)

{

// 对于windows下,\r\n这两个字符在一起时,表示一个换行。

// 但如果这两个字符分开显示时,会换两次行。

// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。

if (((char) tempchar) != '\r')

{

Systemoutprint((char) tempchar);

}

}

readerclose();

}

catch (Exception e)

{

eprintStackTrace();

}

try

{

Systemoutprintln("以字符为单位读取文件内容,一次读多个字节:");

// 一次读多个字符

char[] tempchars = new char[30];

int charread = 0;

reader = new InputStreamReader(new FileInputStream(fileName));

// 读入多个字符到字符数组中,charread为一次读取字符数

while ((charread = readerread(tempchars)) != -1)

{

// 同样屏蔽掉\r不显示

if ((charread == tempcharslength) && (tempchars[tempcharslength - 1] != '\r'))

{

Systemoutprint(tempchars);

}

else

{

for (int i = 0; i < charread; i++)

{

if (tempchars[i] == '\r')

{

continue;

}

else

{

Systemoutprint(tempchars[i]);

}

}

}

}

}

catch (Exception e1)

{

e1printStackTrace();

}

finally

{

if (reader != null)

{

try

{

readerclose();

}

catch (IOException e1)

{

}

}

}

}

/

以行为单位读取文件,常用于读面向行的格式化文件

@param fileName

文件名

/

public static void readFileByLines(String fileName)

{

File file = new File(fileName);

BufferedReader reader = null;

try

{

Systemoutprintln("以行为单位读取文件内容,一次读一整行:");

reader = new BufferedReader(new FileReader(file));

String tempString = null;

int line = 1;

// 一次读入一行,直到读入null为文件结束

while ((tempString = readerreadLine()) != null)

{

// 显示行号

Systemoutprintln("line " + line + ": " + tempString);

line++;

}

readerclose();

}

catch (IOException e)

{

eprintStackTrace();

}

finally

{

if (reader != null)

{

try

{

readerclose();

}

catch (IOException e1)

{

}

}

}

}

/

随机读取文件内容

@param fileName

文件名

/

public static void readFileByRandomAccess(String fileName)

{

RandomAccessFile randomFile = null;

try

{

Systemoutprintln("随机读取一段文件内容:");

// 打开一个随机访问文件流,按只读方式

randomFile = new RandomAccessFile(fileName, "r");

// 文件长度,字节数

long fileLength = randomFilelength();

// 读文件的起始位置

int beginIndex = (fileLength > 4) 4 : 0;

// 将读文件的开始位置移到beginIndex位置。

randomFileseek(beginIndex);

byte[] bytes = new byte[10];

int byteread = 0;

// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

// 将一次读取的字节数赋给byteread

while ((byteread = randomFileread(bytes)) != -1)

{

Systemoutwrite(bytes, 0, byteread);

}

}

catch (IOException e)

{

eprintStackTrace();

}

finally

{

if (randomFile != null)

{

try

{

randomFileclose();

}

catch (IOException e1)

{

}

}

}

}

/

显示输入流中还剩的字节数

@param in

/

private static void showAvailableBytes(InputStream in)

{

try

{

Systemoutprintln("当前字节输入流中的字节数为:" + inavailable());

}

catch (IOException e)

{

eprintStackTrace();

}

}

}

/////////////////////////////////////////////////////////////////

package io;

import javaioFile;

import javaioFileInputStream;

import javaioFileOutputStream;

import javaioIOException;

import javaioInputStream;

import javaioOutputStream;

public class CopyFileUtil

{

/

复制整个目录的内容,如果目标目录存在,则不覆盖

@param srcDirName

待复制的目录名

@param destDirName

目标目录名

@return 如果复制成功返回true,否则返回false

/

public static boolean copyDirectory(String srcDirName, String destDirName)

{

return CopyFileUtilcopyDirectory(srcDirName, destDirName, false);

}

/

复制整个目录的内容

@param srcDirName

待复制的目录名

@param destDirName

目标目录名

@param overlay

如果目标目录存在,是否覆盖

@return 如果复制成功返回true,否则返回false

/

public static boolean copyDirectory(String srcDirName, String destDirName, boolean overlay)

{

// 判断原目录是否存在

File srcDir = new File(srcDirName);

if (!srcDirexists())

{

Systemoutprintln("复制目录失败:原目录" + srcDirName + "不存在!");

return false;

}

else if (!srcDirisDirectory())

{

Systemoutprintln("复制目录失败:" + srcDirName + "不是一个目录!");

return false;

}

// 如果目标文件夹名不以文件分隔符结尾,自动添加文件分隔符

if (!destDirNameendsWith(Fileseparator))

{

destDirName = destDirName + Fileseparator;

}

File destDir = new File(destDirName);

// 如果目标文件夹存在,

if (destDirexists())

{

if (overlay)

{

// 允许覆盖则删除已存在的目标目录

Systemoutprintln("目标目录已存在,准备删除它!");

if (!DeleteFileUtildelete(destDirName))

{

Systemoutprintln("复制目录失败:删除目标目录" + destDirName + "失败!");

}

}

else

{

Systemoutprintln("复制目录失败:目标目录" + destDirName + "已存在!");

return false;

}

}

else

{

// 创建目标目录

Systemoutprintln("目标目录不存在,准备创建它!");

if (!destDirmkdirs())

{

Systemoutprintln("复制目录失败:创建目标目录失败!");

return false;

}

}

boolean flag = true;

// 列出源文件夹下所有文件(包括子目录)的文件名

File[] files = srcDirlistFiles();

for (int i = 0; i < fileslength; i++)

{

// 如果是一个单个文件,则进行复制

if (files[i]isFile())

{

flag = CopyFileUtilcopyFile(files[i]getAbsolutePath(), destDirName + files[i]getName());

if (!flag)

{

break;

}

}

// 如果是子目录,继续复制目录

if (files[i]isDirectory())

{

flag = CopyFileUtilcopyDirectory(files[i]getAbsolutePath(), destDirName + files[i]getName());

if (!flag)

{

break;

}

}

}

if (!flag)

{

Systemoutprintln("复制目录" + srcDirName + "至" + destDirName + "失败!");

return false;

}

Systemoutprintln("复制目录" + srcDirName + "至" + destDirName + "成功!");

return true;

}

/

复制单个文件, 如果目标文件存在,则不覆盖。

@param srcFileName

待复制的文件名

@param destFileName

目标文件名

@return 如果复制成功,则返回true,否则返回false

/

public static boolean copyFile(String srcFileName, String destFileName)

{

return CopyFileUtilcopyFile(srcFileName, destFileName, false);

}

/

复制单个文件

@param srcFileName

待复制的文件名

@param destFileName

目标文件名

@param overlay

如果目标文件存在,是否覆盖

@return 如果复制成功,则返回true,否则返回false

/

public static boolean copyFile(String srcFileName, String destFileName, boolean overlay)

{

// 判断原文件是否存在

File srcFile = new File(srcFileName);

if (!srcFileexists())

{

Systemoutprintln("复制文件失败:原文件" + srcFileName + "不存在!");

return false;

}

else if (!srcFileisFile())

{

Systemoutprintln("复制文件失败:" + srcFileName + "不是一个文件!");

return false;

}

// 判断目标文件是否存在

File destFile = new File(destFileName);

if (destFileexists())

{

// 如果目标文件存在,而且复制时允许覆盖。

if (overlay)

{

// 删除已存在的目标文件,无论目标文件是目录还是单个文件

Systemoutprintln("目标文件已存在,准备删除它!");

if (!DeleteFileUtildelete(destFileName))

{

Systemoutprintln("复制文件失败:删除目标文件" + destFileName + "失败!");

return false;

}

}

else

{

Systemoutprintln("复制文件失败:目标文件" + destFileName + "已存在!");

return false;

}

}

else

{

if (!destFilegetParentFile()exists())

{

// 如果目标文件所在的目录不存在,则创建目录

Systemoutprintln("目标文件所在的目录不存在,准备创建它!");

if (!destFilegetParentFile()mkdirs())

{

Systemoutprintln("复制文件失败:创建目标文件所在的目录失败!");

return false;

}

}

}

// 准备复制文件

int byteread = 0;// 读取的位数

InputStream in = null;

OutputStream out = null;

try

{

// 打开原文件

in = new FileInputStream(srcFile);

// 打开连接到目标文件的输出流

out = new FileOutputStream(destFile);

byte[] buffer = new byte[1024];

// 一次读取1024个字节,当byteread为-1时表示文件已经读完

while ((byteread = inread(buffer)) != -1)

{

// 将读取的字节写入输出流

outwrite(buffer, 0, byteread);

}

Systemoutprintln("复制单个文件" + srcFileName + "至" + destFileName + "成功!");

return true;

}

catch (Exception e)

{

Systemoutprintln("复制文件失败:" + egetMessage());

return false;

}

finally

{

// 关闭输入输出流,注意先关闭输出流,再关闭输入流

if (out != null)

{

try

{

outclose();

}

catch (IOException e)

{

eprintStackTrace();

}

}

if (in != null)

{

try

{

inclose();

}

catch (IOException e)

{

eprintStackTrace();

}

}

}

}

public static void main(String[] args)

{

// 复制单个文件,如果目标存在,则覆盖

String srcPath = "C:/temp/tempfile0txt";

String destPath = "C:/temp_bak/tempfile0_baktxt";

CopyFileUtilcopyFile(srcPath, destPath, true);

// 如果目标存在,则不覆盖

CopyFileUtilcopyFile(srcPath, destPath);

Systemoutprintln();

// 复制文件夹,如果目标存在,则覆盖

String srcDir = "C:/temp";

String destDir = "D:/temp";

CopyFileUtilcopyDirectory(srcDir, destDir, true);

}

}

1:将外部RAM地址20H~25H清零

2:第三组也就是10H~17H

3:4K地址,12根地址线就可以了

4:

TRAM:

MOV DPTR,#3000H

MOV R0,#20H

MOV R2,#15

LOOP:

MOVX A,@DPTR

MOV @R0,A

INC R0

INC DPTR

DJNZ R2,LOOP

RET

2

fseek 实现的功能是将文件读写指针跳到文件末尾, ftell返回当前指针,该程序就是求文件testt的字节数!

3

将new world字符串输入到文件test中!

4

fp=fopen("abctxt","rb")

Y EQU 30H

ORG 1000H

CLR A ;清零累加器

MOV R0,#01 ;R0初始化为1

NEXT:

CJNE R0,#11,AD ;只要R0未累加到11,则执行AD程序段(计算1~10的总和)

MOV Y,A ;将累加器内容(1~10的总和)写入30H处

RET

AD:ADD A, R0 ;R0的内容加进累加器

INC R0 ;R0加一

SJMP NEXT ;跳转回循环

//编写一程序,程序的功能是从键盘输入一个文本文件的名称,读出其文件中的内容,将其中的大写字母转换成小写字母后保存回原文件。

#include<stdioh>

#include<stdlibh>

main()

{

FILE fp;

char ch,filename[20];

printf("请输入文件的路径:\n");

gets(filename);

fp=fopen(filename,"r+");

while(!feof(fp))

{

ch=fgetc(fp);

if(ch>='A'&&ch<='Z') /大小写转换/

{

ch=ch+32;

fseek(fp,-1L,1); /向前移动一个字节/

fputc(ch,fp);

fseek(fp,0L,1); /转换读写状态,不移动/

}

}

fclose(fp); /关闭文件/

}

程序如下:

#include<stdioh>

#include<stdlibh>

main()

{

FILE fp;

char ch,filename[20];

printf("请输入文件的路径:\n");

gets(filename);

fp=fopen(filename,"r+");

while(!feof(fp))

{

ch=fgetc(fp);

if(ch>='A'&&ch<='Z')

{

ch=ch+32;

fseek(fp,-1L,1);

fputc(ch,fp);

fseek(fp,0L,1);

}

}

fclose(fp);

}

如果你的芯片没有被加密,一般的烧录软件都有读出功能,直接读出到缓冲区,就可以进行写入 *** 作了,你还可以视需要决定是否存盘。如果芯片加密了,那你自己基本无法读出,要找解密公司帮助解密,拿到解密文件就可以写入了。

以上就是关于利用字节文件输入输出流,编写程序完成文件的读,写,复制功能。全部的内容,包括:利用字节文件输入输出流,编写程序完成文件的读,写,复制功能。、(51单片机入门题)阅读下列程序,说出本程序的功能、2.阅读下面的程序,分析其功能。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9802785.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存