java文件的输入输出流(java文件输入输出流写入)

华为云服务器特价优惠火热进行中!

2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。

合作流程:
1、点击链接注册/关联华为云账号:点击跳转
2、添加客服微信号:cloud7591,确定产品方案、价格方案、服务支持方案等;
3、客服协助购买,并拉微信技术服务群,享受一对一免费技术支持服务;
技术专家在金蝶、华为、腾讯原厂有多年工作经验,并已从事云计算服务8年,可对域名、备案、网站搭建、系统部署、AI人工智能、云资源规划等上云常见问题提供更专业靠谱的服务,对相应产品提供更优惠的报价和方案,欢迎咨询。

本篇文章给大家谈谈java文件的输入输出流,以及java文件输入输出流写入对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

微信号:cloud7591
如需了解更多,欢迎添加客服微信咨询。
复制微信号

本文目录一览:

java输入流和输出流文件应该建在什么位置

在Java程序中,要想从文件中读取数据,需要在程序和文件之间建立一条数据输入的通道,这样程序就可以从文件中读取数据了;反之,如果要在Java程序中把数据写入到文件中,也需要在程序和文件之间建立一条数据输出的通道。当程序创建输入流对象时,Java会自动建立这个数据输入通道,而创建输出流时,Java也会自动建立这个数据输出通道。如下图所示:

Java程序读取与写入数据

输入流是从文件读取数据,是一个拉取数据的过程;输出流是将数据写入到文件,是一个推送数据的过程。

为了便于理解输入输出流,前面都是以文件为数据源来讨论的。其实,Java的输入与输出流支持任何数据源的读取与写入,包括键盘、文件、网络、数据库等数据源。

输入流和输出流按读取和写入的数据单位可分为字节流和字符流,字节流是以字节为单位传输数据的流,字符流是以字符为单位传输数据的流。

Java所提供的输入流和输出流类封装在Java.io包中

java中的输入输出流该怎么理解

 数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。 

      “流是磁盘或其它外围设备中存储的数据的源点或终点。”

    在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢?

     在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:

         标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据冲外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。

    流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。

java输入输出流的本质是什么?

NONONO,输入输出流是相对于你的程序说的,也就是站在程序的方向看输入还是输出,例如FileInputStream,Input写入对吧,那么我们站在程序的方向来看,就是源文件指向程序,FileOutputStream,OutPut写出,同理,就是程序指向源文件;再看,FileWriter,writer写,同理,就是程序指向源文件,反之FileReader读,站在程序角度,就是程序读源文件,顺序就是源文件指向程序。

java 输入输出流 (被采纳为答案者加100分)

其中BufferedInputStream是FileInputStream的子类,你可以理解成同样处理一个文件,BufferedInputStream效率更高,原因是BufferedInputStream采用了更高效的字节流处理方式,

BufferedInputStream才用缓冲流把内在的缓冲器连接到I/O流,允许java程序对多个字节同时操作,这样就提高了效率。

inputstreamreader的构造函数带两个参数,一是关联到的文件,二是字符解码方式. 所以实际上通过inputstreamreader实例读出来的东西已经不是磁盘上原始的字节数据了,而是根据你指定的解码方式(如果你没有指定,则使用系统缺省的,win2000下是gbk/gb2312)把字节流转换成了字符流,注意字节流和字符流的区别,一个字节就是8比特位(32位机器上),而一个字符含多少字节则与不同的编码/解码方式有关了,如gbk是一字节,utf-8是1-3的变长字节,utf-16是2个定长字节.

于是值得你注意的就是当你用inputstreamreader读文件时,你应该知道该文件被存储时是用什么方式编码的,否则你指定错了解码方式,读出来的就是乱码.但是退一步来说,在全英文环境下,问题也没这严重.因为所有的字符集在前七位上都是与ascii兼容的(我猜的,也许有的不是),然而当你的程序涉及中文字符时,肯定是会出错了.

那么fileinputstream的特点呢?它的构造函数就一个,即关联到的文件,既然没有指定解码方式,那它所做的就是只以字节流的方式读出文件而不做任何处理, 你应该用一个字节数组来接受它,对该数组你以后还可以做任何想做的操作。

给你个例子,自己去测试

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.util.*;

public class test {

/* public static void main(String[] args) {

String str=new String("Face recognition in the thermal infrared domain has received relatively little attention in the literature in comparison with recognition in visible-spectrum imagery");

StringTokenizer token=new StringTokenizer(str);

Hashtable ht=new Hashtable();

while(token.hasMoreTokens()){

String temp=new String(token.nextToken());

ht.put(temp,temp);

}

Enumeration en=ht.keys();

while(en.hasMoreElements()){

Object obj=en.nextElement();

System.out.print("KEY_NO:"+obj);

System.out.println("="+ht.get(obj));

}

}

*/

public static void main(String[] args){

try {

String file1 ="d:\\1.doc";

String file2 ="d:\\2.doc";

copyFile(file1,file2);

readFile(file2);

//fileCheck("d:\\test1.txt");

// readFile("D:\\test1.txt");

// readFileByte("D:\\test1.txt");

// readFileByFile("D:\\test1.txt");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void testFile() throws IOException{

copyFile("D:\\test1.txt","D:\\test2.txt");

}

public static void copyFile(String inName,String outName) throws IOException

{

File tmp = new File(outName);

if(!tmp.canRead())tmp.createNewFile();

BufferedInputStream in = new BufferedInputStream(new FileInputStream(inName));

BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(outName));

copyFile(in,out,true);

}

public static void readFile(String inName) throws IOException

{

BufferedReader read = new BufferedReader (new InputStreamReader(new FileInputStream(inName)));

String b ;

while((b=read.readLine())!=null )

print( b);

}

public static void readFileByte(String inName) throws IOException

{

BufferedInputStream read = new BufferedInputStream (new FileInputStream(inName));

int b = 0;

while((b=read.read())!=-1)

System.out.print ((char)b);

}

public static void readFileByFile(String name) throws IOException

{

File tmp = new File (name);

FileReader fr= new FileReader(tmp);

BufferedReader br = new BufferedReader(fr);

String b;

while((b=br.readLine())!=null)

print(b);

}

public static void copyFile(InputStream in ,OutputStream out, boolean close) throws IOException{

int b;

while((b=in.read())!=-1)

{

out.write(b);

}

in.close();

if(close)

out.close();

}

public static void print(Object o)

{

System.out.println(o);

}

public static void fileCheck(String name) throws IOException

{

print("---"+name+"---");

File f= new File(name);

if(!f.exists())

{

print("fle not exist!");

return;

}

print("Canonical name:"+f.getCanonicalPath());

String p= f.getParent();

if(p!=null)

print("Parent directory :"+p);

if(f.canRead())print("file can be read!");

if(f.canWrite())print("file can be writable!");

Date d = new Date();

d.setTime(f.lastModified());

print("last modified time :"+d);

if(f.isFile())

{

print("file size is :"+f.length()+" bytes");

}else if(f.isDirectory()){print("is a directry!");}

else{

print("neither a directory or a file!");

}

print("");

}

}

关于java文件的输入输出流和java文件输入输出流写入的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发布于 2023-04-07 12:04:51
收藏
分享
海报
31
目录

    忘记密码?

    图形验证码

    复制成功
    微信号: cloud7591
    如需了解更多,欢迎添加客服微信咨询。
    我知道了