当前位置:首页 » 编程语言 » java文件流输出

java文件流输出

发布时间: 2022-06-19 22:11:37

1. java如何使用文件字节输出流类:FileOutputStream

文件字节输出流关联指定文件路径的文件,数据通过文件字节输出流以字节为单位输出并保存到文件中。文件字节输出流继承自OutputStream类,并实现OutputStream类的各种方法。

文件字节输出流的构造方法语法如下:

  • 语法1:以File对象为参数创建FileOutputStream实例

  • new FileOutputStream(File file)1

  • 语法2:以文件对象的绝对路径为参数创建FIleOutputStream实例

  • new FileOutputStream(String filepath)

2. java输入输出流与文件,求源代码!感谢大佬!

你好,java的API中提供了用于对象输入输出文件的操作,实例代码如下:

  1. 定义单词类如下(注意:你定义的类要实现Serializable接口)

public class Words implements Serializable {
private int size;
private String[] words;

public Words(){};

public Words(String...strs){
this.words = strs;
this.size = strs.length;
}

@Override
public String toString() {
return "Words{" +
"size=" + size +
", words=" + Arrays.toString(words) +
'}';
}
}

2. 对象输入输出api测试类

public class ObjIOTest {
public static void main(String[] args) {
String path = "d:/myIOTest.txt";
ObjIOTest objIOTest = new ObjIOTest();

Words words = new Words("hello", "my", "dear", "friend");

try {
objIOTest.writeObject(path,words);
Words wordsFromFile = (Words)objIOTest.readObject(path);
System.out.println(wordsFromFile.toString());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}

//java serialize a object to file
public void writeObject(String path,Object map) throws IOException{
File f=new File(path);
FileOutputStream out=new FileOutputStream(f);
ObjectOutputStream objwrite=new ObjectOutputStream(out);
objwrite.writeObject(map);
objwrite.flush();
objwrite.close();
}

// read the object from the file
public Object readObject(String path) throws IOException, ClassNotFoundException{
FileInputStream in=new FileInputStream(path);
ObjectInputStream objread=new ObjectInputStream(in);
Object map=objread.readObject();
objread.close();
return map;
}
}

把两段代码拷贝到一个包下即可运行了,希望您的问题得到解答

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

数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
“流是磁盘或其它外围设备中存储的数据的源点或终点。”
在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢?
在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:
标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据冲外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。

4. Java里那个输入流和输出流怎么用

//java中使用文件输入流和文件输出流进行文件读写的用例!
Java
packagecom.test.io;

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;

/**
*
*@author亚当爱上java
*用例内容:文件输入流和文件输入流结合用例,字节流方式
*时间:2010-06-20
*注意事项:文件输入流和文件输出流都是相对与内存来说的,例如通过程序读取文件时往内存输入数据就是文件输入流
*/

publicclassFileInputOrOutput{

publicstaticvoidmain(String[]args){

//文件或者路径名的抽象表现形式,意思就是说之后如果进行操作的话就是全部在这个抽象路径名所指向的文件或者文件加中
Filefile=newFile("e:/test.txt");
Filefile2=newFile("e:/test1.txt");

//文件字节数的个数
//System.out.println(file.length());
try{

/*------------------------------------------读操作部分-----------------------------------------------*/
//文件输入流对象
InputStreamfis=newFileInputStream(file);

//文件输入流对象所读取的字节数大小
//System.out.println(fis.available());

/**
*1.按照一个字节为单位进行读取数据,弊端是遇到中文就会把中文的汉字拆开从而出现乱码
*/

////流对象读出的返回值是每次所读到的一个字符所对应的ascii码值
//inti=fis.read();
//
////如果已经读到文件尾则i==-1,此时终止循环
//while(i!=-1){
//System.out.print((char)i);
//保证每一次循环都继续往后读取一个字符,否则i的值不变会成为死循环
//i=fis.read();
//}
/**
*2.按照一个字节数组所指定的大小为单位进行读取,每次最多可以读取数组定义的大小的字节个数
*/

//每次读取都以1K字节作为单位来进行
byteb[]=newbyte[1024];

//流对象读出并返回的是每次读取字节的个数,最大每次读取自己数可以和数组b.length相同
//b中存储了每次所读取的所有数据
inti=fis.read(b);

Stringstr="";
//如果已经读到文件尾则i==-1,此时终止循环
while(i!=-1){
//把每次读取的字节数组解码为字符串
//参数1:要解码为字符的字节
//参数2:要解码的首字符的索引
//参数3:要解码的字节的个数,如果文件个数大于所设定的一次读取文件的大小时i的取值就是
//b.length,否则小于数组的字节大小时则为实际的读取出自己数的大小
str=str+newString(b,0,i);

//保证每一次都往文件的下一部分进行读取,否则i值没有变化会成为死循环
i=fis.read(b);
}

//System.out.print(str);

//关闭输入流对象
fis.close();

/*------------------------------------------写操作部分-----------------------------------------------*/
//文件输出流对象
OutputStreamfos=newFileOutputStream(file2);

//str是从file所指定的文件中读出的所有内容,将此内容写入另一个文件中
//将字符解码为字节数组
byteb2[]=str.getBytes();

//将解码后的字节数组,通过文件输出流对象写入到缓冲区中
fos.write(b);
//强制将缓冲区中的内容输出到文件中
fos.flush();
//关闭输出流对象
fos.close();

}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}
}

5. java将获得的文件写入输出流

可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取到流每行的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 上面的bre就是提问者需要的流。流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。

6. JAVA的输入输出流是什么有几种

输出流:所有的数据都写入指定的文件中了import java.io.*;
public class FileOutputStreamDemo{
public static void main(String[] args){
String str="所有的数据都写入指定的文件中了";
try{
System.out.println("创建文件输出流对象:");
FileOutputStream fos=new FileOutputStream("c://1.txt");
System.out.println("将数据写入文件中...");
fos.write(str.getBytes());
System.out.print("关闭文件");
fos.close();
}
catch(IOException e){
}
}
}输入流:将文件中的内容写入data中import java.io.*;
public class FileInputStreamDemo{
public static void main(String[] args){
try{
FileInputStream fis=new FileInputStream("c://1.txt");
byte[]data=new byte[100];
System.out.println("将文件中的内容写入data中...");
fis.read(data);
PrintStream ps=System.out;
ByteArrayOutputStream baos=new ByteArrayOutputStream();
baos.write(data);
System.out.print("显示data中的内容:...");
baos.writeTo(ps);
fis.close();
baos.close();
ps.close();
}
catch(IOException e){
}
}
}运行程序体会一下输入字节流和字符流和输入字节流和字符流你快要下载一个jdk api文档里面好多关于这方面的说明

7. java怎么输出

java控制台输出由print( ) 和 println( )来完成最为简单。这两种方法由rintStream(System.out引用的对象类型)定义。尽管System.out是一个字节流,用它作为简单程序的输出是可行的。因为PrintStream是从OutputStream派生的输出流,它同样实现低级方法write(),write()可用来向控制台写数据。PrintStream 定义的write( )的最简单的形式如下:

void write(int byteval)

该方法按照byteval指定的数目向文件写字节。尽管byteval 定义成整数,但只有低位的8个字节被写入。下面的短例用 write()向屏幕输出字符“A”,然后是新的行。

// Demonstrate System.out.write().

class WriteDemo {

public static void main(String args[]) {

int b;

b = 'A';

System.out.write(b);

System.out.write(' ');

}

}

一般不常用write()来完成向控制台的输出(尽管这样做在某些场合非常有用),因为print()和println() 更容易用。

四、PrintWriter类

尽管Java允许用System.out向控制台写数据,但建议仅用在调试程序时或在例程中。对于实际的程序,Java推荐的向控制台写数据的方法是用PrintWriter流。PrintWriter是基于字符的类。用基于字符类向控制台写数据使程序更为国际化。PrintWriter定义了多个构造函数,这里所用到的一个如下:

PrintWriter(OutputStream outputStream, boolean flushOnNewline)

outputStream是OutputStream类的对象,flushOnNewline控制Java是否在println()方法被调用时刷新输出流。如果flushOnNewline为true,刷新自动发生,若为false,则不发生。

PrintWriter支持所有类型(包括Object)的print( )和println( )方法,这样,就可以像用ystem.out那样用这些方法。如果遇到不同类型的情况,PrintWriter方法调用对象的toString()方法并打印结果。用PrintWriter向外设写数据,指定输出流为System.out并在每一新行后刷新流。例如这行代码创建了与控制台输出相连的PrintWriter类。

PrintWriter pw = new PrintWriter(System.out, true);

下面的应用程序说明了用PrintWriter处理控制台输出的方法:

// Demonstrate PrintWriter

import java.io.*;

public class PrintWriterDemo {

public static void main(String args[]) {

PrintWriter pw = new PrintWriter(System.out, true);

pw.println("This is a string");

int i = -7;

pw.println(i);

double d = 4.5e-7;

pw.println(d);

}

}

该程序的输出如下:

This is a string

-7

4.5E-7

8. java中建立文件输出流,当文件不存在时是否会新建文件

java中建立文件输出流,当文件不存在时会新建一个文件:
如果有同名文件,自动覆盖。不存在时自动建立。FileOutputStream的默认构造方法是直接覆盖掉原来的文件,而FileOutputStream(File file, boolean append) 的构造方法如果后面的append为true的时候就是追加到尾部而不是直接覆盖了。
,当创建IO对象是,文件是以独占的方式打开,就好比windows打开文件时进行删除,所以是无法删除。创建文件未写入信息,是因为缺少 out.flash() 这句,将缓存内容写入文件。通常在做文件操作,要先判断文件是否存在,最后再写入操作。

9. Java使用文件流(getResourceAsStream())后将文件流输出成文件

读数据的(rs=fis.read(data1, 0, rs)这一句改成
(rs=fis.read(data1, 0, data1.length)就可以了,你的rs一直为零,肯定读不出数据了。读出的数据为空,然后再写,肯定为空了

热点内容
铁电随机存储器 发布:2025-02-06 10:07:19 浏览:914
eclipse编程 发布:2025-02-06 10:02:21 浏览:636
开源库编译管理员 发布:2025-02-06 09:39:14 浏览:914
脸书怎么注册安卓 发布:2025-02-06 09:36:47 浏览:381
车用安卓导航无线打不开什么原因 发布:2025-02-06 09:27:50 浏览:790
安卓与苹果如何互相传送文件 发布:2025-02-06 09:27:40 浏览:26
华为服务器盘符如何分配 发布:2025-02-06 09:26:41 浏览:560
传奇h5源码下载 发布:2025-02-06 09:26:06 浏览:78
编译uclibc 发布:2025-02-06 09:09:04 浏览:152
用gcc编译16位汇编 发布:2025-02-06 09:06:07 浏览:823