编JAVA程序获取指定D盘下file.txt内容要求创建一个fis字节输入流对象一个buf字节组长度定义为1024整数倍

编JAVA程序获取指定D盘下file.txt内容要求创建一个fis字节输入流对象一个buf字节组长度定义为1024整数倍,第1张

您可以使用以下代码来实现您的需求:

该代码会创建一个 FileInputStream 对象,该对象将从指定的文件路径中读取数据。然后,它会创建一个长度为 1024 的字节数组,并使用 fisread(buf) 方法将文件内容读取到该数组中。最后,它会将读取到的内容输出到控制台,并关闭输入流。

Try again

兄弟,得学会看书啊!

从文件fd中读取sizeof(buf)个字节放到buf 指针指向的内存中。

之所以用sizeof(buf),这样动态判定buf的大小,不至于从文件中取长度大于buf长度的字节数。

当有错误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。

函数名: fread

功 能: 从一个流中读数据

用 法: int fread(void ptr, int size, int nitems, FILE stream);

程序例:

#include <stringh>

#include <stdioh>

int main(void)

{

FILE stream;

char msg[] = "this is a test";

char buf[20];

if ((stream = fopen("DUMMYFIL", "w+"))

== NULL)

{

fprintf(stderr,

"Cannot open output file\n");

return 1;

}

/ write some data to the file /

fwrite(msg, strlen(msg)+1, 1, stream);

/ seek to the beginning of the file /

fseek(stream, SEEK_SET, 0);

/ read the data and display it /

fread(buf, strlen(msg)+1, 1, stream);

printf("%s\n", buf);

fclose(stream);

return 0;

}

你想要读两个字节的话:

fread(buf, 2, i, stream);

i+=2;

//获取接收缓冲区中数据的字节数

int n= serialPort1BytesToRead;

//定义字节数组buf,长度为接收缓冲区中数据的字节数

byte[] buf = new byte[n];

//从 SerialPort 输入缓冲区读取一些字节(长度为bufLength,缓存区的字节数)并将那些字节写入buf数组中,返回的是读取的字节数

int lIntLen = serialPort1Read(buf, 0, bufLength);

//定义字节数组lAryData,长度为上面读取的字节数

byte[] lAryData = new byte[lIntLen];

if (lIntLen > 0)

{

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

{

//将从串口读取的字节写到lAryData数组

lAryData[i] = buf[i];

}

}

你的Delphi是不是Delphi2009以上的版本,如果是的话默认的String是WideString你所说的7个字节的String事实上是AnsiString。方法一事实上可以简化为:

const

  str: AnsiString = '中文abc';

var

  buf: array of Byte; len: Integer;

begin

  //获取ansi字符串的长度

  len := Length(str);

  //设置buf数组的长度

  SetLength(buf,len);

  //复制数据到buf数组

  Move(str[1],buf[1],len);

end;

而复制buf的方法,就是上面方法的反 *** 作:

const

  str: AnsiString = '中文abc';

var

  buf: array of Byte; len: Integer;

  astr: AnsiString; trgStr: String;

begin

  //获取ansi字符串的长度

  len := Length(str);

  //设置buf数组的长度

  SetLength(buf,len);

  //复制数据到buf数组

  Move(str[1],buf[1],len);

  //获取buf数组的长度

  len := Length(buf);

  //设置需要复制的Ansi字符串的长度

  SetLength(astr,len);

  //从buf数组复制数据

  Move(buf[1],astr[1],len);

  //将数据复制到trgStr字符串

  trgStr := astr;

  //显示trgStr

  ShowMessage(trgStr);

end;

我们就以内容是abcde为例:你设置的buf长度是1024,因此每次从文件中读取1024个字符。

第一次读取,frread(buf),因为文件中就5个字符,全被读到了buf中,此时len=5,执行循环体中的语句,输出abcde;然后程序继续执行;

第二次读取,frread(buf),由于文件中的数据第一次已经读完,因此此时返回值为-1,跳出循环。

所以最后输出abcde

以上就是关于编JAVA程序获取指定D盘下file.txt内容要求创建一个fis字节输入流对象一个buf字节组长度定义为1024整数倍全部的内容,包括:编JAVA程序获取指定D盘下file.txt内容要求创建一个fis字节输入流对象一个buf字节组长度定义为1024整数倍、请问下n=read(fd,buf,sizeof(buf))这句的详细解释 编程菜鸟、在C++中怎样实现对数据文件的指定数据类型的指定字节长度的数据读取啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9330211.html

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

发表评论

登录后才能评论

评论列表(0条)

保存