精华内容
下载资源
问答
  • java通过http获取网络文件,下载到本地,网络文件转换输入流直接获取网络文件md5值等
    
    
    
    
    package cn.com.bo.util.io;
    
    import java.io.ByteArrayOutputStream;
    import java.io.DataInputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;  
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.UnknownHostException;
    
    import org.apache.commons.codec.digest.DigestUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
      
    public class Image2Binary  
    {  
    	private static Logger log = LoggerFactory.getLogger(Image2Binary.class);
    	
    	public static byte[] toByteArray(InputStream in) throws IOException {
    		
            ByteArrayOutputStream out=new ByteArrayOutputStream();
            byte[] buffer=new byte[1024*4];
            int n=0;
            while ( (n=in.read(buffer)) !=-1) {
                out.write(buffer,0,n);
            }
            return out.toByteArray();
    	}
    	
    	/**
    	 * 网络文件转换为byte二进制
    	* @Title: toByteArray
    	* @Description: TODO(这里用一句话描述这个方法的作用)
    	* @param @param url
    	* @param @return
    	* @param @throws IOException    设定文件
    	* @return byte[]    返回类型
    	* @throws
    	 */
    	public static byte[] toByteArray(String urlStr) throws IOException {
    		URL url = new URL(urlStr);
    		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    		DataInputStream in = new DataInputStream(conn.getInputStream());
            ByteArrayOutputStream out=new ByteArrayOutputStream();
            byte[] buffer=new byte[1024*4];
            int n=0;
            while ( (n=in.read(buffer)) !=-1) {
                out.write(buffer,0,n);
            }
            return out.toByteArray();
    	}
    	
    	/**
    	 * @throws IOException 
    	 * @throws MalformedURLException 
    	 * 网络文件转换为本地文件
    	* @Title: toByteArray
    	* @Description: TODO(这里用一句话描述这个方法的作用)
    	* @param @param url
    	* @param @return
    	* @param @throws IOException    设定文件
    	* @return byte[]    返回类型
    	* @throws
    	 */
    	public static void toBDFile(String urlStr, String bdUrl) throws IOException,UnknownHostException{
    		URL url = new URL(urlStr);
    		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    		DataInputStream in = new DataInputStream(conn.getInputStream());
            byte[] data=toByteArray(in);
            in.close();
            FileOutputStream out=new FileOutputStream(bdUrl);
            out.write(data);
            out.close();
    	}
    	
    	/**
    	 * 直接获取网络文件的md5值
    	 * @param urlStr
    	 * @return
    	 */
    	public static String getMd5ByUrl(String urlStr){
    		String md5 = null;
    		try {
    			URL url = new URL(urlStr);
    			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    			DataInputStream in = new DataInputStream(conn.getInputStream());
    			md5 = DigestUtils.md5Hex(in);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}    
    		return md5;
    	}
    	
    	/**
    	 * 获取网络文件的输入流
    	 * @param urlStr
    	 * @return
    	 */
    	public static InputStream getInputStreamByUrl(String urlStr){
    		DataInputStream in = null;
    		try {
    			URL url = new URL(urlStr);
    			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    			in = new DataInputStream(conn.getInputStream());
    		} catch (IOException e) {
    			log.error("url转换输入流失败,错误信息{}",e.getMessage());
    		}    
    		return in;
    	}
    	
    
        public static void main(String[] args)  
        {  
    //    	try {
    //			toBDFile("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496324940814&di=1d70e0de447be6547c372718b9b30ff6&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F22%2FYMG9CAUWUM15.jpg","E://a.jpg");
    //		} catch (IOException e) {
    //			// TODO Auto-generated catch block
    //			e.printStackTrace();
    //		}
        	String a = getMd5ByUrl("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496324940814&di=1d70e0de447be6547c372718b9b30ff6&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F22%2FYMG9CAUWUM15.jpg");
        	System.out.println(a);
        }  
    }  
    java工具类,对网络文件的一系列操作!
    展开全文
  • 话不多说,直接上代码 注意:设置编码格式 “ISO-8859-1” ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(result.getBytes("ISO-8859-1"));

    话不多说,直接上代码
    注意:设置编码格式 “ISO-8859-1”

      ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(result.getBytes("ISO-8859-1"));
    
    展开全文
  • java输入输出流流文件流FileInputStreamFileOutputStreamFileReaderFileWriter缓冲BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter转换打印 是一组有顺序的,有七点有重点的字节...

    流是一组有顺序的,有七点有重点的字节集合,是对数据传输的总称或抽象。简单来说,就是设备之间的数据传递成为流。

    流的本质:流的本质就是数据的传输,根据不同的数据传输特性,抽象出各种类,方便我们直接操作数据。

    I:input输入
    O:output输出

    文件流

    文件流主要包括:

    1. FileInputStream 字节输入
    2. FileOutputStream 字节输出
    3. FileReader 字符输入
    4. FileWriter 字符输出

    字符流一般用于读取纯文本文件
    字节流一般用于压缩包,图片等

    方法都大同小异

    FileInputStream

    FileInputStream继承自InputStream,按照自己的方式在原始文件中读取数据。

    相对路径:相对当前文件,如何找到

    1. ./ 当前目录
    2. …/ 上级目录
    3. / 下级目录

    绝对路径:以系统跟目录为准,如何找到这个文件。

    常用方法:
    read():从输入流中读取下一个数据字节
    read(byte[] b): 从输入流中读取一定量的字节并将其保存到数组b中,返回读取的长度,数据类型为long类型。
    close():关闭流
    available():可获得的字节数
    skip(int n):跳过不读,返回long类型

    如:读取一个当前文件

    public class IO_06_FileInputStream {
        public static void main(String[] args) throws IOException {
            //创建流对象
            FileInputStream fileInputStream = new FileInputStream("./day20_IO/src/practice/io/IO_06_FileInputStream.java");
    
            //可获得的字节数
            System.out.println(fileInputStream.available());
    
            //读取字节数组
            byte[] bytes = new byte[5];
            fileInputStream.read(bytes);
            System.out.println(new String(bytes));
            System.out.println(fileInputStream.available());
    
            //跳过不读
            long skip = fileInputStream.skip(20);
            System.out.println(skip);
            System.out.println(fileInputStream.available());
    
            //读取一个
            System.out.println((char) fileInputStream.read());
    
            //关闭资源
            fileInputStream.close();
    
        }
    }
    

    FileOutputStream

    FileOutputStream继承自OutputStream,将程序中的内容写到硬盘中

    输入流找不到指定文件会报错,但是输出流不会报错,会自动创建改文件,但是不会创建文件夹

    构造方法:

    1. FileOutputStream(String):把内容输出到指定文件中,并会覆盖原文件中内容
    2. FileOutputStream(String,boolean):如果第二个参数是true,把内容输出到指定文件中,并在原文件中追加数据

    常用方法:

    1. write(int i):写出整型
    2. write(byte[] b):写出字节数组,想要输出字符串可以利用字符串中的getBytes()方法,把字符串转为字节数组
    3. flush():刷缓存,强制把缓冲区写出,避免造成数据遗漏。

    如:

    public class IO_08_FileOutputStream {
        public static void main(String[] args) {
            //创建输出流对象,如果没有传递boolean值,默认是false,会替换源文件内容
            //如果传入true,将会在文件末尾加入写出的数据
            try {
                FileOutputStream fileOutputStream = new FileOutputStream("E:/123.txt", true);
                for (int i = 0; i < 26; i++) {
                    fileOutputStream.write(i + 97);
                }
    
                //写出字符串
                String str = "Hello World哈哈哈哈";
                byte[] b = str.getBytes(StandardCharsets.UTF_8);
                fileOutputStream.write(b);
    
                //刷缓存
                fileOutputStream.flush();
                //关闭连接
                fileOutputStream.close();
    
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    }
    

    FileReader

    FileReader:一次读一个字符,也就是2字节,Unicode编码也是2字节。

    常用方法:

    1. read():读取一个字符,返回下一个字符数据,到达文件末尾返回-1
    2. read(byte[] b):读取一个字符数组,返回读取到的字符数,到达文件末尾返回-1

    如:

    public class IO_07_FileReader {
        public static void main(String[] args) {
            try {
                FileReader fileReader = new FileReader("E:\\CodeLast\\workspaceForIDEA\\TL\\day20_IO\\src\\practice\\io\\IO_02_FileInputStream.java");
                char[] c = new char[512];
                int tmp = 0;
                while ((tmp = fileReader.read(c)) != -1){
                    System.out.println(new String(c,0,tmp));
                }
    
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    }
    

    FileWriter

    字符输出流
    和字节输出流基本一致,新增字符串写出

    如:

    public class IO_09_FileWrite {
        public static void main(String[] args) {
            try(FileWriter fileWriter = new FileWriter("E:/123.txt")) {
                //  \n是换行
                fileWriter.write("哈哈哈哈哈\n");
                char[] chars = {'a','b','c','d'};
                fileWriter.write(chars);
    
                fileWriter.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    缓冲流

    缓冲流就是包装流,创建对象的时候,传入的参数不是文件地址,而是文件流对象

    作用:把每次读入的数据存入到一个缓冲区,然后一次写入;把输出的数据存入一个缓冲区,然后一次写出。

    好处:提高效率。比如搬砖,没有缓冲流就是一块一块搬砖,加上缓冲流就是先装好一车,再运砖。

    常用方法和文件流相同

    BufferedInputStream

    如:

    public class IO_10_BufferedInputStream {
        public static void main(String[] args) {
            try {
                //创建字节输入流
                FileInputStream fileInputStream = new FileInputStream("./day20_IO/src/practice/io/IO_02_FileInputStream.java");
                //创建字节输入缓冲流
                BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
    
                //读取下一个字节,到达文件末尾返回-1
                System.out.println((char) bufferedInputStream.read());
    
                //读取一个数组,返回读到的长度,到达末尾返回-1
                byte[] bytes = new byte[10];
                int temp = bufferedInputStream.read(bytes);
                System.out.println(new String(bytes,0,temp));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    BufferedOutputStream

    如:

    public class IO_11_BufferedOutputStream {
        public static void main(String[] args) {
            try {
                //创建字节输出流对象
                FileOutputStream fileOutputStream = new FileOutputStream("E:/123.txt");
                //创建字节输出缓冲流对象,并把字节输出流传入
                BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
    
                //写出单个
                bufferedOutputStream.write(97);
    
                //写出字符串
                bufferedOutputStream.write("Hello World".getBytes(StandardCharsets.UTF_8));
                //刷缓存
                bufferedOutputStream.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    BufferedReader

    新增加了readLine(),作用是读取一行数据,返回值就是读到的这一行的数据,到达文件末尾,返回null。

    如:

    public class IO_12_BufferedReader {
        public static void main(String[] args) throws IOException {
            FileReader fileReader = new FileReader("./day20_IO/src/practice/io/IO_02_FileInputStream.java");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
    
            //读取一行,返回读到的内容,到达文件末尾返回null
            String temp = bufferedReader.readLine();
            System.out.println(temp);
    
            //循环读取
            String str = null;
            while ((str = bufferedReader.readLine()) != null) {
                System.out.println(str);
            }
        }
    }
    

    BufferedWriter

    新增newLine(),作用是换行,就等于\n

    如:

    public class IO_13_BufferedWrite {
        public static void main(String[] args) throws IOException {
            //创建字符输出流,默认覆盖写出
            FileWriter fileWriter = new FileWriter("E:/123.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
    
            bufferedWriter.write("哈哈哈哈哈哈哈");
            //换行
            bufferedWriter.newLine();
            bufferedWriter.write("哈哈哈哈哈哈哈哈哈哈");
            //刷缓存
            bufferedWriter.flush();
    
            fileWriter.close();
        }
    }
    

    转换流

    转换流:字节流和字符流之间转换的桥梁,可以通过转换把字节流转换为字符流,并且还可以在转换的过程中,指定字符编码。

    1. InputStreamReader:输入流转换
    2. OutputStreamWriter:输出流转换

    应用场景:接受别的地方的数据,比如接收到的是字节数据,自己需要使用字符数据

    如:

    public class IO_14_InputStreamReader {
        public static void main(String[] args) throws IOException {
            //创建一个字节输入流对象
            FileInputStream fileInputStream = new FileInputStream("./day20_IO/src/practice/io/IO_02_FileInputStream.java");
            //创建转换流对象
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
            //创建字符输入缓冲流,把转换流传入
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    
            String temp = bufferedReader.readLine();
            System.out.println(temp);
    
    
        }
    }
    

    打印流

    打印流是输出最方便的类

    1. 字节打印流PrintStream
    2. 字符打印流PrintWriter

    使用方式:

    public class IO_15_PrintStream {
        public static void main(String[] args) throws FileNotFoundException {
            //out是标准的打印流,打印到控制台
            System.out.println("哈哈哈哈哈哈哈哈哈哈");
    
            //创建输出流
            FileOutputStream fileOutputStream = new FileOutputStream("E:/log.txt");
            //创建打印流,并传入输出流
            PrintStream printStream = new PrintStream(fileOutputStream);
            //调用打印方法,打印到指定文件
            printStream.println("日志系统");
    
            //可以设置System中的out
            System.setOut(printStream);
            //设置到System中后,在使用打印语句,会打印到指定地方
            System.out.println("=============================");
    
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSSS");
            System.out.println("m1开始执行:"+simpleDateFormat.format(new Date()));
            m1();
            System.out.println("m1执行结束:"+simpleDateFormat.format(new Date()));
        }
    
        public static void m1(){
            System.out.println("m1 method execute!!");
        }
    }
    

    执行完setOut(PrintStream out)方法后,所以控制台的输出都会输出到指定文件当中去。

    展开全文
  • 字节提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,字符就可以。 (2).字节转换成字符可以用InputStreamReader,OutputStreamWriter。 一般我们在使用的时候通常用字节。 3. 文件读写的...
  • API ----IO ----字节输入输出练习 java.lang.Object 继承者 java.io.InputStream 继承者 java.io.FileInputStreampublic FileInputStream类速查速记:直接包装File用于从记事本中读数据 in是针对java来说的,从...
    API ----IO ----字节输入输出流练习

    java.lang.Object
    继承者 java.io.InputStream
    继承者 java.io.FileInputStream

    public 

    FileInputStream类速查速记:

    直接包装File
    用于从记事本中读数据
    in是针对java来说的,从记事本读入到java
    * 

    构造方法:

    // FileInputStream(String name)
    

    成员方法:

    * 

    67a802f7bf7101c8847e540308b3eec7.png
    FileInputStream读取数据的两种方式比较图解.bmp

    我自己分别用while和for两种循环写的方式1和方式2:(可用)

    public 

    FileInputStream类:

    演示1:方式1读数据(通过字节的方式)

    package 

    我自己的答案:

    // 获取文件内容的方法,输入String,返回void
    

    演示2:方式2读数据(通过字节数组的方式)

    package 
    展开全文
  • java如何将输入流InputStream成OutputStream或者是直接输出文件。 下面有个复制文件的方法,但是效率慢。大侠们可有其他方法? /** * 文件输入流转文件输出 * * @param inputStream * 文件输入流 * @param ...
  • 最大的区别是:字节流直接与终端文件进行数据交互(读入、输出),而字符需要将数据经过缓冲区处理才与终端文件进行数据交互。 如在使用字节输出OutputStream输出数据时,即使最后没有关闭输出,内容也可以...
  • 今天在做项目开发是遇到一个问题,就是在java代码中创建HSSFWorkbook表格写入数据后,不直接返回给...获取输入流后上传服务器。文件是上传成功,但是文件下载后打开会提示文件已损坏。 正确的解决方法(红色涂改...
  • 1.概述 简单来说 就是设备之间的数据传递称为流 流的本质 就是数据的传输,根据不同的数据传输特性,抽象出各种类,方便我们直接操作... // 将输入流提出原因:内部作用域够不到finally的作用域. // 赋值为null的原因:try
  • Java中的输入、输出流中可以用于文件的读写,拷贝。...输入流还可以直接转换为图片来保存。 读取文件的实例代码如下 public String read_file(String filename){ File f = new File(filename); try{
  • 利用Java输入输出更改文件中指定的内容​昨天准备发布一个数学公式的博客到wordpress上,但是在Typora中写的数学公式的格式与wordpress中的编辑器所指定的格式不同。本来想着手动改一下算了,但仔细一想这个数学...
  • 文件流(InputStream)转文件(file) 直接上代码(需要自取): /** 输入流转文件 @param ins @param file */ public static void inputStreamToFile(InputStream ins, File file) { BufferedOutputStream bos = ...
  • 定义:程序用于直接操作目标设备所对应的类叫节点 节点: FileInputStream、FileOutputStream、 FileReader、 FileWriter FileReader public void test() throws IOException { // 路径,相较于当前module,...
  • 字符输入流 Reader 类是所有字符流输入类的父类,该类定义了许多方法,这些方法对所有子类都是有效的。 Reader 类的常用子类如下。 CharArrayReader 类:将字符数组转换为字符输入流,从中读取字符。 StringReader ...
  • 尽管 Java 中字节流的功能十分...字符输入流Reader 类是所有字符流输入类的父类,该类定义了许多方法,这些方法对所有子类都是有效的。Reader 类的常用子类如下。CharArrayReader 类:将字符数组转换为字符输入流...
  • 我的要保存的文件,数据库对应的字段是byte[]类型的,得到之后,怎么操作啊? ![图片说明](https://img-ask.csdn.net/upload/201612/05/1480904606_919190.png) ![图片说明]...
  • InputStreamReader 是把InputStream流转化为ReaderOutputStreamWriter 和InputStreamReader都是包裹实例:如何将键盘输入的字符组成字符串直接赋给String对象。readLine()与回车符的问题:Print ...
  • 尽管 java 中字节流的功能十分...字符输入流 Reader 类是所有字符流输入类的父类,该类定义了许多方法,这些方法对所有子类都是有效的。 Reader 类的常用子类如下。 CharArrayReader 类:将字符数组转换为字符输...
  • 在I/O流当中提供了字节流和字符流两种形式,但是有时需要将字节流转化为字符流,那么怎样...InputStreamReade是Reader的子类,它可以将一个字节输入流转化为字符输入流,方便直接读入字符。OutputStreamWriter是Writ...
  • 输入流:信息从程序空间之外的地方流入程序空间里面 输出流:信息从程序空间里面流到程序空间之外的地方 输入输出流的分类 从流的方法划分 输入流 输入流 从流的分工划分 节点流:访问文件进行输入输出操作的...
  • 文本文件/ASCII文件(能直接显示内容,费存储空间):文件中每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件或称字符文件。 二进制文件(不能显示内容,节省存储空间) :...
  • 输出流转输入流

    2017-08-15 17:10:00
    当有输出流数据需要转换成输入流使用时,就不那么直观了,我最初的想法是输出流数据写到文件中,然后读文件输入流啦,但是这种利用到硬盘的方法非常不可取的,后来上网查了一下,可以通过管道流PipedStream来...
  • 直接用 java 命令行动态生成jpg文件 ()[@more@]/*** jeruGraphics v 1.0** 看到一些动态生成图象的例子都是完成的,* 而且很长,觉得不是无论从实用性还是可读性来说都不是太好。* 这里给了段代码,命令行生成图象...
  • 直接用 java 命令行动态生成jpg文件 ()[@more@]/*** jeruGraphics v 1.0** 看到一些动态生成图象的例子都是完成的,* 而且很长,觉得不是无论从实用性还是可读性来说都不是太好。* 这里给了段代码,命令行生成图象...
  • 字节: OutputStream:字节写入基类。...而字节直接将数据传送到目标位置。FileOutputStream 文件字节写入操作类import java.io.*; class FileOutputStreamDemo { public static void main(S
  • 文件字节

    2019-08-14 20:03:07
    io流是为了读写文件中的数据 一、流 流的分类 按流向分:输入流:将数据读入程序      输出流:将程序输出到文件 操作单元:字节流:传输字节型...Inputstream字节输入流 此抽象类是表示字节输入流的所有类的超...
  • IO缓冲与转换

    2019-10-05 01:57:01
    Java的IO流按流向分为输入流和输出流,按流的性能,又可以将流分为节点流和处理流。 节点流 节点流:直接与数据源相连,读入或读出。直接使用节点流,读写不方便,为了更快的读写文件,才有了处理流。 常用的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 793
精华内容 317
关键字:

文件直接转输入流