JAVA:已知获取文件的输出流ouputStream,怎么转换为文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA:已知获取文件的输出流ouputStream,怎么转换为文件相关的知识,希望对你有一定的参考价值。

OutputStream output =new FileOutputStream(file);
怎么讲ouputStream流转换为文件,不是inputStream流

可以通过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流会一直存在,直到程序运行结束。追问

能详细说明下吗?我http请求获取到的文件流,比如说返回来字段是output ,类型为ouputStream , 要转换为文件
BufferedReader 怎么转呢?

参考技术A  File file1 = new File("a.txt");
 File file2 = new File("b.txt");
 FileChannel aChannel = new FileInputStream(file1).getChannel();
 FileChannel bChannel = new FileOutputStream(file2).getChannel();
 for (long count = aChannel.size(); count > 0; ) 
       long transferred = aChannel.transferTo(aChannel.position(), count, bChannel);
       aChannel.position(aChannel.position() + transferred);
       count -= transferred;
 

通过NIO的方式将a文件拷贝到b文件,已知输出流,就把输出流转通channel,通过开启的channel通道来相互转换,冰阔落递一下。

java IO流 之 输出流 OutputString()

Java学习重点之一:OutputStream 字节输出流的使用

FileOutPutStream:子类,写出数据的通道

  步骤:

    1.获取目标文件

    2.创建通道(如果原来没有目标文件,则会自动创建一个)

    3.写入数据 write()

    4.释放资源

  注意:

    (1)如果目标文件不存在,那么会自己创建一个目标文件

    (2)如果目标文件存在,先将里面的数据清空,再写入数据

    (3)想在原有的数据上写入数据,则在创建通道的时候使用 构造方法:

       OutPutStreamFile fileBoolean append),boolean值为true则可以

    (4)用 writeint a)方法写入数据,虽然接收的是int,但实际上只有一个字节的数据

      (操作的是低八位的,其他的全部丢掉)

 

//会自动导入一些包

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
//方式一
1
public static void writeData() throws IOException{ 2 //1.找目标文件 3 File file = new File("C:\\Users\\bigerf\\Desktop\\文件夹\\writeTest.java"); 4 5 //2.创建一个通道 6 FileOutputStream outputStream = new FileOutputStream(file); 7 8 //3.开始写入数据, 9 int a = 10; // int 型 4个字节 10 outputStream.write(a); //注意这里每次只能输出一个字节 11 outputStream.write(‘b‘); // char 类型 12 outputStream.write(5); 13 14 // 0000-0000 0000-0000 0000-0001 1111-1111 == 511 15 int b = 511 ; //大于八位(9位) 16 outputStream.write(b); //实际结果 255,但没有显示 17 18 int c = 63; //小于八位(6位) 19 outputStream.write(c); //乱码 20 21 //4.关闭资源 22 outputStream.close(); 23 }

 

 //方式二
1
public static void writeData2() throws IOException{ 2 //1.找目标文件 3 File file = new File("C:\\Users\\bigerf\\Desktop\\文件夹\\writeTest2.java"); 4 5 //2.创建一个通道,(如果不存在路径中的文件,则会在这一步创建的文件) 6 //new FileOutputStream(file,true); /true表示在原来文本的基础上写入文本(反之则会先清空再写入) 7 FileOutputStream outputStream = new FileOutputStream(file,true); 8 9 //3.创键一个字节数组 10 String str = "hello word"; 11 //将字符串变为字节数组 12 byte[] b = str.getBytes(); 13 14 //4.写入数据 15 outputStream.write(b); //hello word 16 17 //5.关闭资源 18 outputStream.close(); 19 20 }

陌陌说:

  输入流与输出流可以实现对文件的拷贝,不妨试着实现

  (先将路径文件的数据拷贝写入到字节数组,再从字节数组写出道路径文件)



以上是关于JAVA:已知获取文件的输出流ouputStream,怎么转换为文件的主要内容,如果未能解决你的问题,请参考以下文章

如何用java程序读取带密码(密码已知)的office文档。

Java-I/O输入输出

java 已经获取pdf代码,如何把他pdf文件保存到本机 要求用输出流做

java IO流 之 输出流 OutputString()

文件的流操作和speex

java 读取文件流乱码输出乱码