java读取文件时,InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾们

java读取文件时,InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾们,第1张

那个长度应该只是缓冲区而已,应该不影响结果的。我做的时候一般都设置为1024,即1KB

这个是我部分的成功代码

inputStream = new BufferedInputStream(new FileInputStream(

downloadFile));

outputStream = new BufferedOutputStream(response

getOutputStream());

byte[] buffer = new byte[1024];

int readIndex;

while (-1 != (readIndex = inputStreamread(buffer, 0,

bufferlength))) {

outputStreamwrite(buffer, 0, readIndex);

}

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

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

Try again

由于Java是基于Unicode编码的,因此,一个汉字的长度为1,而不是2。但有时需要以字节单位获得字符串的长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,

如果是汉字或其他全角字符,Ascii会大于255。

话不多说先上代码

Scanner sc = new Scanner(f);

int i = 0, j=0, k=0;

while(schasNext()) {

scnext();

i++;

}

sc = new Scanner(f);

while(schasNextLine()) {

scnextLine();

j++;

}

sc = new Scanner(f);

while(schasNextByte()) {

scnextByte();

k++;

}

Systemoutprintln(i+" "+j+" "+k);

然后区分一下字节和字符的概念,一个字节是一个8位的2进制数,一个字符是'a'、'1'这种

楼主是不是说的统计字符呢

scanner类中并没有统计字符的方法 用filereader貌似方便一点

这是只是提供一个思路,多查api文档,多用google,这类问题都不叫问题。

搜到这段代码后,我表示很惭愧

public class Test {

public static void main(String[] args) throws Exception{

Scanner input=new Scanner(Systemin);

Systemoutprintln("请输入路径");

String path=inputnext();

int charNum= 0 ;

int wordsNum= 0;

int lineNum = 0;

InputStreamReader isr = new InputStreamReader(new FileInputStream(path));

BufferedReader br = new BufferedReader(isr);

while( brread()!= -1){

String s = brreadLine();

charNum+=slength();

wordsNum +=ssplit(" ")length;

lineNum ++;

}

isrclose();//关闭

Systemoutprintln("字符数:"+charNum+"\t单词数:"+wordsNum+"行 数:"+lineNum);

}

}

public static void main(String[]args)

{

String ss="hel无此数lo";

byte[] buff=ssgetBytes();

int f=bufflength;

Systemoutprintln(f);

}

可参阅>

BufferedReader br=new BufferedRead(new FileReader(file))

StringBuffer sb=new StringBuffer();

String line;

while((line=brreadLine())!=null){

sbappend(line);

}

JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代码,需要的可以直接复制使用

public class ReadFromFile {

/

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

/

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) {

}

}

}

}

/

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

/

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) {

}

}

}

}

/

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

/

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) {

}

}

}

}

/

随机读取文件内容

/

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) {

}

}

}

}

/

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

/

private static void showAvailableBytes(InputStream in) {

try {

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

} catch (IOException e) {

eprintStackTrace();

}

}

public static void main(String[] args) {

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

ReadFromFilereadFileByBytes(fileName);

ReadFromFilereadFileByChars(fileName);

ReadFromFilereadFileByLines(fileName);

ReadFromFilereadFileByRandomAccess(fileName);

}

}

以上就是关于java读取文件时,InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾们全部的内容,包括:java读取文件时,InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾们、编JAVA程序获取指定D盘下file.txt内容要求创建一个fis字节输入流对象一个buf字节组长度定义为1024整数倍、java 按字节获取字符串长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存