java中如何读取输入流中一段固定长度的字节保存成一个文件?

java中如何读取输入流中一段固定长度的字节保存成一个文件?,第1张

这个太简单了,不过你说的是在太模糊了,首先输入流是哪个流,有没有限制,如果有限制就不知道了,没有限制就太好办了。我想你是这个意思:使用某个输入流读取固定长度的字节,然后保存到一个文件中。读取固定长度不是难题,保存到一个文件中也不是问题,关键你要知道这个输入流的API方法,例如。FileInputStream,创建一个流,创建一个字节数组,然后使用流对象调用read(byte[] arr,int off,int len),arr是你创建的字节数组,off是起始地点,len是读取的数据长度。然后把arr写入到一个文件中,就实现保存了。

public static void process() {
try {
Enumeration portList = CommPortIdentifiergetPortIdentifiers();
while (portListhasMoreElements())
{
CommPortIdentifier portId = (CommPortIdentifier) portListnextElement();
if (portIdgetPortType() == CommPortIdentifierPORT_SERIAL)//如果端口类型是串口则判断名称
{
if(portIdgetName()equals("COM1")){//如果是COM1端口则退出循环
break;
}else{
portId=null;
}
}
}
SerialPort serialPort = (SerialPort)portIdopen("Serial_Communication", 1000);//打开串口的超时时间为1000ms
serialPortsetSerialPortParams(9600,SerialPortDATABITS_8,SerialPortSTOPBITS_1,SerialPortPARITY_NONE);//设置串口速率为9600,数据位8位,停止位1们,奇偶校验无
InputStream in = serialPortgetInputStream();//得到输入流
OutputStream out = serialPortgetOutputStream();//得到输出流
//进行输入输出 *** 作
// *** 作结束后
inclose();
outclose();
serialPortclose();//关闭串口
} catch (PortInUseException e) {
eprintStackTrace();
} catch (UnsupportedCommOperationException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
}
}

import javaio;
public class ReadFile {
public static void main(String[] args) {
try {
File ff = new File(args[0]); //args[0]是你从控制台输入的文件路径,可以改为具体文件路径
FileInputStream fis = new FileInputStream(ff);
int n;
byte [] buff= new byte[1000];
// 从文件读取数据
while ((n = fisread(buff)) != -1) {
// 写入Systemout中
Systemoutwrite(buff, 0, n);
}
} catch (IOException e) {
Systemoutprintln("没有找到文件");
Systemexit(1);
}
}
}

基于流(Stream)的解决
流是单向的有方向性的描述信息流的对象,InputStream是输入流的接口,对程序来说是入,是读,可以从文件读,缓存区读,网络节点读等等
写入文件,对程序来说是出,是写,就是FileOutputStream,可以写入int也可以byte[]
所以解决方案就是从InputStream中读出内存到byte[]中然后,使用FileOutputStream写入文件中比如:其中一种写法
InputStream is = new FileInputStream("atxt");
FileOutputStream fos = new FileOutputStream("btxt");
byte[] b = new byte[1024];
while((isread(b)) != -1){
foswrite(b);
}
isclose();
fosclose();

分为读字节,读字符两种读法
◎◎◎FileInputStream 字节输入流读文件◎◎◎
public class Maintest {
public static void main(String[] args) throws IOException {

File f=new File("G:\\just for fun\\xiangweitxt");

FileInputStream fin=new FileInputStream(f);

byte[] bs=new byte[1024];

int count=0;
while((count=finread(bs))>0)
{
String str=new String(bs,0,count); //反复定义新变量:每一次都 重新定义新变量,接收新读取的数据
Systemoutprintln(str); //反复输出新变量:每一次都 输出重新定义的新变量
}
finclose();
}
}
◎◎◎FileReader 字符输入流读文件◎◎◎
public class Maintest {
public static void main(String[] args) throws IOException {

File f=new File("H:\\just for fun\\xiangweitxt");

FileReader fre=new FileReader(f);

BufferedReader bre=new BufferedReader(fre);
String str="";
while((str=brereadLine())!=null) //●判断最后一行不存在,为空
{
Systemoutprintln(str);
}
breclose();
freclose();
}

}


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

原文地址: http://outofmemory.cn/yw/13382282.html

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

发表评论

登录后才能评论

评论列表(0条)

保存