Android 中各种文件输入输出流

来源:互联网 发布:caxa画图软件 编辑:程序博客网 时间:2024/06/05 23:51

0: 输入流

InputStream->HttpURLConnection.getInputStream

  ->getResource().openRawResource(R.raw.a);
  ->xmlPullParser.setInput(inputStream, "utf-8");
  ->xmlReader.parse(new InputSource(getResources().openRawResource(R.raw.worker)));
FileInputStream相对与InputStream 这个构造方法里面可以放地址
BufferedInputStream 里面的参数是InputStream,其实就是InputStream的缓存流,因为FileInputStream 集成了InputStream ,所以也可以放FileInputStream
-----------------------------------------------------------------------

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(getCacheDir().getPath()+"/print.txt")));  



1:输出流

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
OutputStream->HttpURLConnection.getOutputStream
FileOutputStream相对于OutputStream 这个构造方法啊里面可以放地址:FileOutputStream fos = new FileOutputStream(getCacheDir().getPath()+"/1.bmp"); 
BufferedOutputStream bos =  new BufferedOutputStream(new FileOutputStream(getCacheDir().getPath()+"/3.bmp"));
-----------------------------------------------------------------------
PrintStream ps = new PrintStream(getCacheDir().getPath()+"/print.txt"); 
ByteArrayOutputStream bos = new ByteArrayOutputStream();

BufferedWriter bw = new BufferedWriter(new FileWriter(recordFile));  

PrintWriter pw = new PrintWriter(new FileWriter("qq.txt"),true);->服务器端的PrintWriter,直接就是文本,所以用字符输出流



+++++++++++++++++++++++++++++++++++++++++++++++++

0: 输入流

InputStream->HttpURLConnection.getInputStream

   ->getResource().openRawResource(R.raw.a);
   ->xmlPullParser.setInput(inputStream, "utf-8");
   ->xmlReader.parse(new InputSource(getResources().openRawResource(R.raw.worker)));


InputStream in</span> = null;            FileOutputStream fos = null;            if (httpURLConnection.getResponseCode() == 200) {                in = httpURLConnection.getInputStream();                fos = new FileOutputStream(getCacheDir().getPath()+"a.bmp");                byte[] arr = new byte[1024];                int len = 0;                //每次读取 1024个字节,如果读取返回为-1说明到了文件的末尾,结束读取                while ((len = in.read(arr)) != -1) {                    fos.write(arr, 0, len);                }                //一定要记住要关闭读取流。                in.close();                fos.close();            }


 //XmlPullParser的工厂类        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();        XmlPullParser xmlPullParser = factory.newPullParser();        //xmlPullParser.setInput的第一个参数就是 InputStream,        //这里是将xml 文件放在了raw文件夹里面,然后通过getResources().openRawResource(R.raw.worker)来获取        InputStream inputStream = getResources().openRawResource(R.raw.worker);        //开始读取文件,并设置编码类型为utf-8        xmlPullParser.setInput(inputStream, "utf-8");        //获取event的类型,然后循环直至END_DOCUMENT,循环的增加条件一定不能忘记eventType=xmlPullParser.next();        int eventType = xmlPullParser.getEventType();


//SAX 的工厂类        SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();        SAXParser saxParser = saxParserFactory.newSAXParser();        // 通过parser得到XMLReader对象        XMLReader xmlReader = saxParser.getXMLReader();        //创建MyHandler的实例        MyHandler saxHandler = new MyHandler();        //将saxHanlder 放入xmlReader中。        xmlReader.setContentHandler(saxHandler);        xmlReader.parse(new InputSource(getResources().openRawResource(R.raw.worker)));        //此时通过MyHandler 里面的方法来获取List<Worker>        saxList = saxHandler.getmList();

FileInputStream相对与InputStream 这个构造方法里面可以放地址
BufferedInputStream 里面的参数是InputStream,其实就是InputStream的缓存流,因为FileInputStream 集成了InputStream ,所以也可以放FileInputStream

    //实例3 使用字节流的缓冲区复制一张图片      public void example3CopyImage() throws IOException{          BufferedInputStream bis =                  new BufferedInputStream(getResources().openRawResource(R.raw.a));          BufferedOutputStream bos =                  new BufferedOutputStream(new FileOutputStream(getCacheDir().getPath()+"/3.bmp"));          byte[] arr = new byte[1024];          int len=0;          while ((len=bis.read(arr))!=-1){              bos.write(arr,0,len);          }            bis.close();          bos.close();      }  


-----------------------------------------------------------------------

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(getCacheDir().getPath()+"/print.txt")));  

//实例9,字符输出流      public void example9PrintWriter() throws IOException{          Log.d("kodulf", "实例9++++++++开始+++++++++++++");          /*          PrintWriter:字符输出流,字符输出流的基本功能都具备了,增加了打印功能                      可以操作的目的:                          File类型的文件                          字符串类型的文件                          字节输出流                          字符数出流         */            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(getCacheDir().getPath()+"/print.txt")));            //PrintWriter pw = new PrintWriter(System.out,true);//自动刷新            PrintWriter pw = new PrintWriter(new FileWriter("qq.txt"),true);//自动刷新            String line = null;            while((line = br.readLine())!=null)          {              if("over".equals(line))                  break;              pw.println(line);              //pw.write(line);              //pw.write("\r\n");              //pw.flush();          }          br.close();          pw.close();          Log.d("kodulf", "实例9++++++++结束+++++++++++++");      }  


1:输出流

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

OutputStream->HttpURLConnection.getOutputStream

            url = new URL("http://192.168.1.106:8080/ServerDemo/servlet/LoginServlert");              HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();                urlConnection.setRequestMethod("POST");              urlConnection.setConnectTimeout(5000);              urlConnection.setDoInput(true);              urlConnection.setDoOutput(true);//设置可以向服务器传递数据                //设置提交的内容的类型              urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");                //设置提交的内容的长度              byte[] data = sb.toString().getBytes("utf-8");//注意这里的编码utf-8              urlConnection.setRequestProperty("Content-Length", String.valueOf(data.length));                //提交数据              OutputStream outputStream = urlConnection.getOutputStream();              outputStream.write(data);              outputStream.close();  


FileOutputStream相对于OutputStream 这个构造方法啊里面可以放地址:FileOutputStream fos = new FileOutputStream(getCacheDir().getPath()+"/1.bmp"); 

1.1 需要存储的我们使用FileOutputStream 将它写入到文件中            InputStream in = null;            FileOutputStream fos = null;            if (httpURLConnection.getResponseCode() == 200) {                in = httpURLConnection.getInputStream();                fos = new FileOutputStream(getCacheDir().getPath()+"a.bmp");                byte[] arr = new byte[1024];                int len = 0;                //每次读取 1024个字节,如果读取返回为-1说明到了文件的末尾,结束读取                while ((len = in.read(arr)) != -1) {                    fos.write(arr, 0, len);                }                //一定要记住要关闭读取流。                in.close();                fos.close();            }

BufferedOutputStream bos =  new BufferedOutputStream(new FileOutputStream(getCacheDir().getPath()+"/3.bmp"));

//实例3 使用字节流的缓冲区复制一张图片      public void example3CopyImage() throws IOException{          BufferedInputStream bis =                  new BufferedInputStream(getResources().openRawResource(R.raw.a));          BufferedOutputStream bos =                  new BufferedOutputStream(new FileOutputStream(getCacheDir().getPath()+"/3.bmp"));          byte[] arr = new byte[1024];          int len=0;          while ((len=bis.read(arr))!=-1){              bos.write(arr,0,len);          }            bis.close();          bos.close();      }  

-----------------------------------------------------------------------

PrintStream ps = new PrintStream(getCacheDir().getPath()+"/print.txt"); 

//实例8 打印流,字节输出流      public void example8PrintStream() throws IOException{          Log.d("kodulf", "实例8++++++++开始+++++++++++++");          /*打印流:          PrintStream:字节输出流,字节输出流的基本功能都具备了,又增加了打印功能                      可以操作的目的:                      File类型的文件                      字符串类型的文件                      字节输出流          */          PrintStream ps = new PrintStream(getCacheDir().getPath()+"/print.txt");          //ps.write(97);// 00000000 00000000 00000000 01100001---->自动砍掉了前三个字节--->01100001          //ps.write(353);//  00000000 00000000 00000001 01100001---->自动砍掉了前三个字节--->01100001          //System.out.println(353);          //ps.println(353);//按照数据原样儿写入到目的,也就是数据的表现形式,内部用了 String.valueOf()          ps.write(String.valueOf(353).getBytes());          ps.close();          Log.d("kodulf", "实例8++++++++结束+++++++++++++");      }  


ByteArrayOutputStream bos = new ByteArrayOutputStream();

            //判断服务器端的响应码是不是200              InputStream in = null;              if(urlConnection.getResponseCode()==200){                  in = urlConnection.getInputStream();                  ByteArrayOutputStream bos = new ByteArrayOutputStream();                  byte[] arr = new byte[1024];                  int len=0;                  while((len=in.read(arr))!=-1){                      bos.write(arr,0,len);                  }                    byte[] b = bos.toByteArray();                  String ss = new String(b,"utf-8");                  Log.d("kodulf",ss);              }              //关闭流              in.close();  


BufferedWriter bw = new BufferedWriter(new FileWriter(recordFile));  

//实例7 得到指定目录下的所有的目录包括子目录下的,存到集合中,然后存到cache/record.text 文件中      //1:得到指定目录下的所有的Java文件包括子目录下的,存到集合中      //2:遍历集合,把集合中每个File对象写入到文件中      public void example7ListDirectorys() throws IOException{          Log.d("kodulf", "实例7++++++++开始+++++++++++++");          List<File> directorys = new ArrayList<File>();          File externalStorageDirectory = Environment.getExternalStorageDirectory();          listDirectorys(externalStorageDirectory, directorys);            File recordFile = new File(getCacheDir(),"record.text");          BufferedWriter bw = new BufferedWriter(new FileWriter(recordFile));          for (File file:directorys){              bw.write(file.getName());              bw.newLine();              bw.flush();          }            bw.close();            Log.d("kodulf", "实例7++++++++结束+++++++++++++");      }  


PrintWriter pw = new PrintWriter(new FileWriter("qq.txt"),true);->服务器端的PrintWriter,直接就是文本,所以用字符输出流

    //实例9,字符输出流      public void example9PrintWriter() throws IOException{          Log.d("kodulf", "实例9++++++++开始+++++++++++++");          /*          PrintWriter:字符输出流,字符输出流的基本功能都具备了,增加了打印功能                      可以操作的目的:                          File类型的文件                          字符串类型的文件                          字节输出流                          字符数出流         */            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(getCacheDir().getPath()+"/print.txt")));            //PrintWriter pw = new PrintWriter(System.out,true);//自动刷新            PrintWriter pw = new PrintWriter(new FileWriter("qq.txt"),true);//自动刷新            String line = null;            while((line = br.readLine())!=null)          {              if("over".equals(line))                  break;              pw.println(line);              //pw.write(line);              //pw.write("\r\n");              //pw.flush();          }          br.close();          pw.close();          Log.d("kodulf", "实例9++++++++结束+++++++++++++");      }  }  

public void doPost(HttpServletRequest request, HttpServletResponse response)              throws ServletException, IOException {                    response.setContentType("text/html;charset=utf-8");          PrintWriter out = response.getWriter();                    request.setCharacterEncoding("utf-8");//请求方式是 post          //先得到客户端提交的用户名和密码          //因为客户端信息被封装在 request对象中,所以需要从request对象中获取用户名密码          String uname = request.getParameter("username");//?username= &psw=          //String uname = fun(name);                    String psw = request.getParameter("password");                    //验证          if(uname!=null&&uname.trim()!=""&&psw!=null&&psw.trim()!="")          {              if("哈哈".equals(uname) && "123".equals(psw))              {                  out.println("登陆成功");              }              else                  out.println("登陆失败");          }else{              out.println("参数有问题");          }          out.flush();          out.close();            /**         response.setContentType("text/html");         PrintWriter out = response.getWriter();                           out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");         out.println("<HTML>");         out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");         out.println("  <BODY>");         out.print("    This is ");         out.print(this.getClass());         out.println(", using the POST method");         out.println("  </BODY>");         out.println("</HTML>");         out.flush();         out.close();         */      }  






//实例9,字符输出流 public void example9PrintWriter() throws IOException{ Log.d("kodulf", "实例9++++++++开始+++++++++++++"); /* PrintWriter:字符输出流,字符输出流的基本功能都具备了,增加了打印功能 可以操作的目的: File类型的文件 字符串类型的文件 字节输出流 字符数出流 */ BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(getCacheDir().getPath()+"/print.txt"))); //PrintWriter pw = new PrintWriter(System.out,true);//自动刷新 PrintWriter pw = new PrintWriter(new FileWriter("qq.txt"),true);//自动刷新 String line = null; while((line = br.readLine())!=null) { if("over".equals(line)) break; pw.println(line); //pw.write(line); //pw.write("\r\n"); //pw.flush(); } br.close(); pw.close(); Log.d("kodulf", "实例9++++++++结束+++++++++++++"); }

0 0
原创粉丝点击