随笔-I/O流

InputStream

--FileInputStream

--ByteArrayInputStream

--FilterInputStream

---BufferedInputStream

如:BufferedInputStream input=new BufferedInputStream(new FileInputStream("baidu"));

---DataInputStream

如:

DataOutputStream ds=new DataOutputStream(conn.getOutputStream());

ds.writeBytes("\r\n");
    ds.writeBytes(encode(value) + "\r\n");

// 对包含中文的字符串进行转码,此为UTF-8。服务器那边要进行一次解码
    private String encode(String value) throws Exception {
        return URLEncoder.encode(value, "UTF-8");
    }

--ObjectInputStream

如:ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream(name));

Member member= (Member) objectInputStream.readObject();

OutputStream

--FileOutputStream

--ByteArrayOutputStream

如:ByteArrayOutputStream out = new ByteArrayOutputStream();

for (int n = -1; (n = input.read(buffer)) != -1;)

out.write(buffer, 0, n); //buffer就是输出的数据,如果控制台想打印就直接输出buffer

System.out.println(new String(out.toByteArray()));

--FilterOutputStream

---BufferedOutputStream

如:

BufferedOutputStream out2=new BufferedOutputStream(new FileOutputStream("baidu"));

byte[] buffer = new byte[1024];

for (int k=0;(k = input.read(buffer)) != -1;) {//input 是BufferedInputStream input=new     //BufferedInputStream(new FileInputStream("baidu"));

out2.write(buffer, 0, k);
}

---DataOutputStream(基本类型 ,String)

---PrintStream

--ObjectOutputStream

如:Member b=new Member();

ObjectOutputStream objectOut=new ObjectOutputStream(new FileOutputStream(b.getName())) ;
    objectOut.writeObject(b);

利用ByteArrayOutputStream复制文件

public static void saveFiles(String origPath, String destPath) throws Exception {
        File file = new File(origPath);
        if (!file.exists() || file.isDirectory())
            throw new FileNotFoundException();
        BufferedInputStream in = new BufferedInputStream(
                new FileInputStream(file));
        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
        byte[] temp = new byte[1024];
        int size = 0;
        while ((size = in.read(temp)) != -1) {
            out.write(temp, 0, size);
        }
        in.close();
        String str1 = out.toString("gbk"); //得到字符串
        File file1 = new File(destPath);
        FileOutputStream fos = new FileOutputStream(file1);
        fos.write(str1.getBytes("utf-8")); //输出

}

Reader

--StringReader

--CharArrayReader

--InputStreamReader (可以指定编码)

--FileReader

--BufferedReader

如:BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream("z1"),System.getProperty("file.encoding")));

Writer

--StringWriter

--CharArrayWriter

--InputStreamWriter (可以指定编码)

--FileWriter

--BufferedWriter

如:BufferedWriter w=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("OutputStreamWriter")));

char[] data=new char[1024];
        int length=0;
        while((length = input.read(data)) != -1){
            output.write(data,0, length);
            System.out.println(data);
        }

--PrintWriter

如:

PrintWriter w2=new PrintWriter("OutputStreamWriter2");

PrintWriter w3=  new PrintWriter(  
                new OutputStreamWriter(  
                       new FileOutputStream("OutputStreamWriter2"),"UTF-8"));

URL 读写

public void test(){
        String boundary = "--------httppost123";
        try {
            URL url=new URL("http://www.baidu.com/");
            //    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.100.201.236", 8080)); //代理
            HttpURLConnection connection=(HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setUseCaches(false);
            connection.setConnectTimeout(40000); // 连接超时为10秒
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
            connection.connect();
            InputStream in = connection.getInputStream();
            BufferedInputStream input=new BufferedInputStream(in);
            OutputStream out=new FileOutputStream("baidu");     
            BufferedOutputStream out2=new BufferedOutputStream(out);
            byte[] buffer = new byte[1024];
            for (int k=0;(k = input.read(buffer)) != -1;) {
                out2.write(buffer, 0, k);
            }
            connection.disconnect();
            System.out.println(new String(out.toByteArray()));
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

时间: 2024-10-22 04:32:06

随笔-I/O流的相关文章

新随笔(一) 从用户心理体验谈慎用瀑布流设计

新随笔(一) 从用户心理体验谈慎用瀑布流设计 最早使用瀑布流布局技术的是Pinterest,瀑布流设计确实带给用户更新鲜的视觉体验,很容易引导用户不停滚动鼠标,感觉丰富的内容永远不会结束,瀑布流的设计有他很明显的优点,但同时也有他的缺点,并不是所有网站都适用. 社交网站和移动设备适用于瀑布流设计 移动界面由于手机屏幕狭窄,列表项垂直排列,需要单手频繁的滚动,当用户向下滚动内容,自动加载更多的内容,而无需等待页面预加载.这样,用户会感觉到响应很及时,现在微博.微信均采用此方式, 社交网站之所以采用

前端学习随笔:float布局问题------float元素是否脱离了文档流

问题: 今天学习2016-03-13,我知道float的原始作用为实现文字的环绕效果,但是老师说:对元素设置float属性后,该元素依然处于标准文档流中,同时浮动会 引起父元素的高度塌陷问题(怎么解决,目前不知道).但是,紧随其后的块元素会无视设置float属性的元素,但是后面元素的文本依然会为float元素让出位置,环绕于周围.既然后元素没有按照标准文档流单独占一行,我是不是可以理解为浮动的元素脱离了文档流??前后矛盾了. 解答:回答这个问题之前,首先解释一下什么叫脱离文档流! css中脱离文

Flink流计算随笔(1)

相比 Spark Stream.Kafka Stream.Storm 等,为什么阿里会选择 Flink 作为新一代流式计算引擎?前期经过了哪些调研和对比? 大沙:我们是 2015 年开始调研新一代流计算引擎的.我们当时的目标就是要设计一款低延迟.exactly once.流和批统一的,能够支撑足够大体量的复杂计算的引擎.Spark streaming 的本质还是一款基于 microbatch 计算的引擎.这种引擎一个天生的缺点就是每个 microbatch 的调度开销比较大,当我们要求越低的延迟

flink流计算随笔(4)

Flink中的程序本质上是并行的和分布式的.在执行期间,流有一个或多个流分区,每个操作符有一个或多个操作符子任务.操作符子任务相互独立,在不同的线程中执行,可能在不同的机器或容器上执行. 运算符子任务的数量是特定运算符的并行度.一个流的并行性总是它的生产操作符的并行性.同一程序的不同运算符可能具有不同级别的并行性. 流可以在两个操作符之间以一对一(或转发)模式传输数据,也可以在重分发模式中传输数据: 一对一One-to-one流(例如上图中源和map()运算符之间的流)保持元素的分区和顺序.这意

flink流计算随笔(3)

Stateful Computations over Data Streams(在数据流的有状态计算)Apache Flink是一个用于分布式流和批处理数据的开源平台.Flink的核心是一个流数据流引擎,它为数据流上的分布式计算提供数据分布.通信和容错能力.Flink在流引擎之上构建批处理,覆盖本地迭代支持.托管内存和程序优化.通常在程序中的转换和数据流中的操作符之间存在一对一的对应关系.然而,有时一个转换可能包含多个转换操作符. 在串流连接器和批处理连接器文档中记录了源和汇(Sources a

flink流计算随笔(2)

MACOS下安装flink: $ brew install apache-flink ... $ flink --version $brew upgrade MACOS下启动flink: $cd /usr/local/Cellar/apache-flink/1.6.0 $./libexec/bin/start-cluster.sh /* * Licensed to the Apache Software Foundation (ASF) under one * or more contribut

flink流计算随笔(6)

?生成,编译模板工程 MacBook-Air:SocketWindowWordCount myhaspl$ bash <(curl https://flink.apache.org/q/sbt-quickstart.sh) % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 11510 100 11510 0 0 4499 0 0:00:02

web前端学习随笔

好好算下来,学习web前端已有半个月了,这半个月来主要学习的是HTML和CSS部分,期间有困惑,也有解决困惑时的快感,所以想把这段时间感受到的一些东西记下来,因为内容比较杂,所以干脆叫随笔吧.这里面不会说前端的相关基础知识,只是说一些自己对前端的一些认识. html是用来控制页面结构的我曾经对这句话有过疑问,觉得html应该是控制页面内容的,为什么要说是控制页面结构的呢?在查看京东首页的代码时,我恍然大悟,html确实是定义页面内容的,但同时它也要控制页面的结构.举例来说,京东商品分类的div包

JavaWeb学习随笔

Servlet学习随笔 1.HttpServlet init(ServletConfig)------Servlet生命周期中的初始方法,默认情况是服务器创建后第一次访问这个Servlet时调用,可以修改配置信息,使其在服务器一创建时就被调用; 修改配置信息的方法-----在web.xml的<servlet>下添加<load-on-startup>x<load-on-startup>,x是正整数,越小表示优先级越高 url路径的配置,完全匹配>目录匹配>(.