File I|O(八)

1.I/O:input/output
  1.1.java.io.File
    表示:文件或者文件夹(目录)
  File f=new File("文件路径")
  注意:相对路径:非web项目的相对路径都是以项目名为起点(src/a.txt)(建议使用)
       绝对路径:d:/bin/a.txt(以盘符开头的)(不可取)

2.文件常见方法
  boolean flag=f.exists(); //文件是否存在
  flag=f.isFile(); //是否是文件
  flag=f.isDirectory(); //是否是目录
  str=f.getPath(); //获得文件的相对路径
  str=f.getAbsolutePath(); //获得文件的绝对路径
  str=f.getName(); //获得文件名
  flag=f.delete(); //删除文件
  flag=f.createNewFile(); //创建文件
  long=f.length(); //返回文件长度
  注意:File不能操作文件内容

3.InputStream/OutputStream
  文件:FileInputStream/FileOutputStream
    3.1 FileInputStream(输入流)
      数据从文件到java代码中。
      int read(); //读取一个字节
      int read(byte[]); //读取一串字节
      long avaliable; //文件长度
    3.2 FileInputStream(字节文件输入流)
      new FileInputStream(File);
      new FileInputStream("文件路径+文件名");
    3.3 FileOutputStream(输出流)
      数据从java代码中,写到文件或者其他介质中。
      void write(字节); //写入一个字节
      void write(byte[]); //写入字节数组
    3.4 FileOutputStream
      new FileOutputStream(File);
      new FileOutputStream("文件路径+文件名");
      new FileOutputStream("文件路径+文件名",true);
    注意:a.boolean:表示是否向文件末尾追加,如果是true,表示追加,false表示不追加(也就是覆盖),默认值为false
       b.创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件。

4.Reader/Writer(字符流)
  //能够用文本编辑器打开的文件,不乱码就是字符文件
  //能够用文本编辑器打开乱码的,就是字节文件
    4.1 FileReader
      int b=fr.read(); //读取一个字符
      int length=fr.read(char[]); //读取字符数组
    4.2 FileWriter
      fw.write(char); //写一个字符
      fw.write(char[]); //写字符数组
    4.3BufferedReader(字符输入缓冲流)
      BufferedReader br=new BufferedReader(new FileReader("文件路径"));
      String str=br.readLine(); //读取一行字符
    4.4BufferedWriter(字符输出缓冲流)
      BufferedWriter bw=new BufferedWriter(new FileWriter("文件路径"));
      bw.write(字符串);

运行结果:

 1 package Day19;
 2
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.FileReader;
 6 import java.io.FileWriter;
 7 import java.io.IOException;
 8
 9 public class TestBuffer {
10     public static void main(String[] args) throws Exception {
11         buReader();
12         buWriter();
13
14     }
15
16     private static void buWriter() throws Exception {
17         BufferedWriter bw=new BufferedWriter(new FileWriter("src/a.txt"));
18         bw.write("我是中国人");
19         //刷新缓存
20         bw.flush();
21         //默认执行flush(),关闭管道
22         bw.close();
23     }
24
25     private static void buReader() throws Exception {
26         BufferedReader br=new BufferedReader(new FileReader("src/d.txt"));
27         //读取一行记录
28 //        String str=br.readLine();
29 //        str=br.readLine();
30 //        System.out.println(str);
31
32         String str;
33         while((str=br.readLine())!=null){
34             System.out.println(str);
35         }
36     }
37 }

代码示例

5.DataInputStream/DataOutputStream

6.小结
  6.1读写字符文件
    读:BufferedReader br=new BufferedReader(new FileReader("文件路径"));
    写:BufferedWriter bw=new BufferedWriter(new FileWriter("文件路径",boolean));
  6.2读写字节文件
    DataInputStream dis=new DataInputStream(new FileInputStream("文件路径"));
    DataOutputStream dos=new DataOutputStream(new FileOutputStream("文件路径"));
  6.3读取整个字符文件
    String str=null;
    while((str=br.readLine())!=-1){
      System.out.println(str);
    }
  6.4读取整个字节文件
    int b;
    while((b=dis.read())!=-1){
      System.out.println(b);
    }

 1 package Day20;
 2
 3 import java.io.DataInputStream;
 4 import java.io.DataOutputStream;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7
 8 public class TestByteFile {
 9     public static void main(String[] args) throws Exception {
10         DataInputStream dis1=new DataInputStream(new FileInputStream("src/a.jpg"));
11         int a=dis1.read();
12         System.out.println(a);
13         dis1.close();
14
15         DataOutputStream dos1=new DataOutputStream(new FileOutputStream("src/b.jpg"));
16         dos1.write(255);
17         dos1.close();
18
19         //复制a.jpg--->b.jpg
20         DataInputStream dis2=new DataInputStream(new FileInputStream("src/a.jpg"));
21         DataOutputStream dos2=new DataOutputStream(new FileOutputStream("src/b.jpg"));
22         int b;
23         while((b=dis2.read())!=-1){
24             dos2.write(b);
25         }
26         dis2.close();
27         dos2.close();
28     }
29 }

代码示例

时间: 2024-10-12 11:50:07

File I|O(八)的相关文章

文件管理File类

在上一讲中,我们学习了泛型集合的几种类型,今天这讲我们主要研究下File的基本使用. 首先,File类是个静态类,无法实例化.它的命名空间是:using System.IO File中基本的方法如下演示: 图一.File.Create 图二.File.Copy一般情况 图三.File.Copy(path,path1,true); 图四.File.Delete 图五.File.Exists(); 图六.File.Move 图七.File.ReadAllLines() 图八.ReadAllText和

w3wp.exe CPU过百问题

w3wp.exe CPU过百问题 最近发布在windows  server2012  IIS8.0上的一个WebAPI项目,才几十个人在线,CPU就会出现过百情况,并且CPU一旦过百应用程序池就自动暂停掉,看到这个问题我感觉应该是程序哪个地方出了问题, 8盒16G 应该配置还是可以的.打算使用windbg找到这个问题. 为了快速定位问题我就直接在生产环境安装了windbg,为了采集dump文件,我选择Procdump.Procdump无需安装,下载下来直接放到一个目录下即可.以下是解决问题的过程

【分享】VNR翻译日语游戏汉化简易图解教材2

[分享]VNR翻译日语游戏汉化简易图解教材 http://867258173.diandian.com/post/2014-07-19/40062240755  请先看上面[PC,PSP,同人志翻译图解教材]和下载[J北京各版本],[J北京词典].[精灵虚拟光驱],[APP,NT,LE,,Ntleas四大转码工具]和[AlphaROM一键破解],7z之类相关的 请先看上面地址和下载,以后更新的教材和新的整合版将在这里补充.   使用OCR光学识别自动翻译游戏 添加[人工字幕]提高翻译质量   游

SQL Server2008宝典 全书代码

3.3.7 -- ============================================= -- Create database template -- ============================================= USE master GO -- Drop the database if it already exists IF EXISTS ( SELECT name FROM sys.databases WHERE name = N'test

深入理解磁盘文件系统之inode

一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块",是文件存取的最小单位."块"的大小,最常见的是4KB,即连续八个 sector组成一个 block. 文

find/pg/grep/sed/awk命令

find pathname -options [-print -exec -ok ...] -print: find命令将匹配的文件输出到标准输出. 当前目录下查找文件权限位为 7 5 5的文件 $ find . -perm 755 -print 当前目录及子目录中查找文件名以一个大写字母开头的文件 $ find . -name "[A-Z]*" 希望在系统根目录下查找更改时间在 5日以内的文件 $ find / -mtime -5 -print 为了在/var/adm目录下查找更改时

Java制作证书的工具keytool用法总结

摘录自:http://www.cnblogs.com/xdp-gacl/p/3750965.html 一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在JDK 1.4以后的版本中都包含了这一工具,它的位置为%JAVA_HOME%\bin\keytool.exe,如下图所示: 二.keytool的用法 三.创建证书 创建证书主要是使用" -genke

[原]Android打包之Eclipse打包

Android自动打包流程详细图: 步骤一: 在工程中新建一个build.xml. 步骤二: 给工程配置ant工具. 选择ant工具的步骤如下: Windows->Shown view->Ant 这样就出项了ant视图框.在ant视图框中单击右键,选择addBuilderfile添加ant编译文件. 添加好ant编译文件后,我们还需要对编译文件进行设置:选中编译文件,右键单击选择Run As->external Tools configurations 弹出了ant编译的配置框. 在编译

keytool用法总结

一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在JDK 1.4以后的版本中都包含了这一工具,它的位置为%JAVA_HOME%\bin\keytool.exe,如下图所示: 二.keytool的用法 三.创建证书 创建证书主要是使用" -genkeypair",该命令的可用参数如下: 范例:生成一个名称为test1的证书 Cmd代码 1

Windbg+Procdump解决w3wp.exe CPU过百问题

最近发布在windows  server2012  IIS8.0上的一个WebAPI项目,才几十个人在线,CPU就会出现过百情况,并且CPU一旦过百应用程序池就自动暂停掉,看到这个问题我感觉应该是程序哪个地方出了问题, 8盒16G 应该配置还是可以的.打算使用windbg找到这个问题. 为了快速定位问题我就直接在生产环境安装了windbg,为了采集dump文件,我选择Procdump.Procdump无需安装,下载下来直接放到一个目录下即可.以下是解决问题的过程+截图: 步骤一: 安装windb