导航:首页 > 编程语言 > java边读边写

java边读边写

发布时间:2023-02-09 02:04:50

1. java io 流 有一种流是边读边写的 , 还一种 不管文件多大都读到内存中 , 分别叫什么

边读边写用多线程每个流都可以做到,管道流就是典型的流!

不管文件多大,读到内存那是不可能的,你所说的应该是内存流
内存流典型的流(字节数组流),特点内部封装一个可变长度的数组,
特点就是处理速度快,可对外提供完整数据的数组,非常方便!
试想一下,你一个文件8G大,你能全都读到内存中去?对么....

2. java 边写边读一个集合对象,怎么简单的实现

List有个 addAll方法
boolean addAll(Collection<? extends E> c)
添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)。
多执行几次就实现了你的功能

3. Java中IO缓冲区的原理是什么

如果是边读边写,就会很慢,也伤硬盘。缓冲区就是内存里的一块区域,把数据先存内存里,然后一次性写入,类似数据库的批量操作,这样效率比较高。

调用I\O操作的时候,实际上还是一个一个的读或者写,关键就在,CPU只有一个,不论是几个核心。CPU在系统调用时,会不会还要参与主要操作?参与多次就会花更多的时间。

系统调用时,若不用缓冲,CPU会酌情考虑使用 中断。此时CPU是主动地,每个周期中都要花去一部分去询问I\O设备是否读完数据,这段时间CPU不能做任何其他的事情(至少负责执行这段模块的核不能)。所以,调用一次读了一个字,通报一次,CPU腾出时间处理一次。

而设置缓冲,CPU通常会使用 DMA 方式去执行 I\O 操作。CPU 将这个工作交给DMA控制器来做,自己腾出时间做其他的事,当DMA完成工作时,DMA会主动告诉CPU“操作完成”。这时,CPU接管后续工作。在此,CPU 是被动的。DMA是专门 做 I\O 与 内存 数据交换的,不仅自身效率高,也节约了CPU时间,CPU在DMA开始和结束时做了一些设置罢了。
所以,调用一次,不必通报CPU,等缓冲区满了,DMA 会对C PU 说 “嘿,伙计!快过来看看,把他们都搬走吧”。

综上,设置缓冲,就建立了数据块,使得DMA执行更方便,CPU也有空闲,而不是呆呆地候着I\O数据读来。从微观角度来说,设置缓冲效率要高很多。尽管,不能从这个程序上看出来。 几万字的读写\就能看到差距

4. java如何实现对同一个text文本边写边读

import java.io.*;
import java.lang.*;
import java.util.Scanner;
import java.io.*;
import java.lang.*;
public class Sy2Student
{
public static void main(String []args)
{
Writer Swriter=null;
Scanner s=new Scanner(System.in);
System.out.print("输入学生的人数:");
int Studentpeople=s.nextInt();
String []StudentScore=new String[Studentpeople];
String []StudentName=new String[Studentpeople];
System.out.println("请输入学生的姓名和总分");
for(int i=0;i<Studentpeople;i++)
{
StudentName[i]=s.next();
StudentScore[i]=s.next();
System.out.println("\n");
}
int []IntStudentScore=new int[Studentpeople];
for(int n=0;n<Studentpeople;n++)
{
IntStudentScore[n]=Integer.parseInt(StudentScore[n]);
}

int StudentScoreMin=IntStudentScore[0];
int StudentScoreMax=IntStudentScore[0];
for(int m=1;m<Studentpeople;m++)
{
int AllScore=IntStudentScore[0];
AllScore+=IntStudentScore[m];
//求最低分
if(StudentScoreMin>IntStudentScore[m])
StudentScoreMin=IntStudentScore[m];
else
StudentScoreMin=StudentScoreMin;
}
//求最高分
for(int p=0;p<Studentpeople;p++)
{
if(StudentScoreMax<IntStudentScore[p])
StudentScoreMax=IntStudentScore[p];
else
StudentScoreMax=StudentScoreMax;
}
try{
Swriter=new FileWriter("Student.txt");
Swriter.write("学生成绩表单\n");
Swriter.write("姓名:\t\t总分:\n");
for(int j=0;j<Studentpeople;j++)
{
Swriter.write(StudentName[j]+"\t\t");
Swriter.write(StudentScore[j]+"\n");
}
Swriter.write("最高分:"+StudentScoreMax+"\n");
Swriter.write("最低分:"+StudentScoreMin+"\n");

}catch(IOException e){
e.printStackTrace();
}finally{
if(Swriter!=null)
try{
Swriter.close();
}catch(IOException e){}

}
Reader RStudent=null;
try{
RStudent=new FileReader("Student.txt");
char []buffer=new char[1024];
int offset;
while((offset=RStudent.read(buffer))>0)
System.out.println(new String(buffer,0,offset));
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
if(RStudent!=null)
try{
RStudent.close();
}catch(IOException e){}
}
}
}

你可以参考着个程序 我自己写的

5. 用java读取文件可以一边读取一边写入吗如果我读取到某行数据,想用其它数据替换或者删除怎么写

另外写一个文件,把有用的、需要改动的信息写入,最后删除原文件。

6. java读写同一个文件

在使用BufferedReader和BufferedWriter 要注意:

读不会修改文件,所以同一个file声明多个reader来读,没有问题,

但是写会修改文件,所以在对一个file绑定了writer之后,不能再读了,也不能再声明其它writer到这个file,所以可以说writer是独占的,

如果你调试一下 可以发现,在声明writer之后,file所指定的文件内容会变成空,

所以你将

BufferedWriter writer = new BufferedWriter(new FileWriter(file)); 提到read之前会报NullPointerException


希望能给楼主帮助~~

纯手工打造,还请楼主采纳~~


下面是多个reader一个writer的例子:

packagetest;

importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;

publicclassTest{
publicstaticvoidmain(String[]args){
Filefile=newFile("D:/test.txt");
try{
BufferedReaderreader=newBufferedReader(newFileReader(file));
BufferedReaderreader2=newBufferedReader(newFileReader(file));

Stringline=reader.readLine();
Stringline2=reader2.readLine();
System.out.println(line);
System.out.println(line2);

BufferedWriterwriter=newBufferedWriter(newFileWriter(file));

writer.write(line);

writer.flush();
reader.close();
writer.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}

7. java文件上传是是一次性上传到服务器内存再读还是一边读客户端一边写

两种情况,都会有

~
~
~
~
~
~
~
~

阅读全文

与java边读边写相关的资料

热点内容
cad视觉移动命令怎么打开 浏览:819
安卓java调用python 浏览:395
java标准时间 浏览:137
华为服务器湖北渠道商云主机 浏览:30
韩式面部护理解压视频 浏览:301
pdf换成jpg图片 浏览:897
dh加密算法 浏览:107
安卓手机如何隐藏微信信息提示 浏览:632
nodejs解压缩 浏览:262
直流双转子压缩机 浏览:952
pythonxmlstring 浏览:822
用私钥加密之后可以用公钥解密 浏览:788
ug如何启动服务器 浏览:444
csgo防抖动命令 浏览:960
如何弄到手机app页面的源码 浏览:441
androidwindows7破解版 浏览:363
解压视频动画怎么拍 浏览:748
连涨启动源码 浏览:163
小奔运动app网络异常怎么回事 浏览:449
php开启压缩 浏览:307