java之路,IO操作

简介: import java.io.* class FileTest {  public static void main(String[] args)  {   File f = new File("1.

import java.io.*

class FileTest
{
 public static void main(String[] args)
 {
  File f = new File("1.txt");
  f.createNewFile();      //创建一个文件
  f.mkdir();              //创建一个目录
  
  File f = new File("E:\code\java\1.txt");   //使用绝对路径创建
  f.createNewFile();         
  
  //separator是一个分隔符,解决的不同平台下分隔符不一样的问题
  //例如在windows平台下是\ ,而在linux平台下是/
  File fd = new File("File.separator");   //创建根目录
  String sf = "e:" + File.separator + "code" + File.separator + "1.txt";
  File f = new File(fd, sf);
  f.createNewFile();
  
  f.delete();         //删除文件
  f.deleteOnExit();   //程序退出的时候删除
  Thread.sleep(3000);
  
  for(int i=0; i   {
   //在默认的临时文件目录创建临时文件,java自动给文件加序号
   //createTempFile是静态方法,可以直接访问,创建临时文件
   File f = File.createTempFile("wj", ".tmp");   //在默认的临时文件目录创建临时文件,java自动给文件加序号
   f.deleteOnExit();
  }
  Thread.sleep(3000);
  
  //list()返回目录下所有的文件名和子目录名字
  //FilenameFilter(),文件名过滤器,实现accept方法
  String sf = "e:" + File.separator; + "code" + File.separator + "1.txt";
  File f = new File(fd, sf);
  f.createNewFile();  
  String[] names = f.list(new FilenameFilter()
  {
   public boolean accept(File dir, String name)  //accept
   {
    return name.indexOf(“java”) != -1;  //indexOf查找一个子串,不存在返回-1,存在返回索引值
   }
  });
  for(int i=0; i   {
   System.out.println(names[i]);
  }
  
 }
}

流(Stream)是字节的源或目的。
两种基本的流是:输入流(Input Stream)和输出流(Output Stream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。
节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。
过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。

三个基本的读方法:
abstract int read() :读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。
int read(byte[] b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。
int read(byte[] b, int off, int len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。
其它方法:
long skip(long n) :在输入流中跳过n个字节,并返回实际跳过的字节数。
int available() :返回在不发生阻塞的情况下,可读取的字节数。
void close() :关闭输入流,释放和这个流相关的系统资源。
void mark(int readlimit) :在输入流的当前位置放置一个标记,如果读取的字节数多于readlimit设置的值,则流忽略这个标记。
void reset() :返回到上一个标记。
boolean markSupported() :测试当前流是否支持mark和reset方法。如果支持,返回true,否则返回false。

三个基本的写方法:
abstract void write(int b) :往输出流中写入一个字节。
void write(byte[] b) :往输出流中写入数组b中的所有字节。
void write(byte[] b, int off, int len) :往输出流中写入数组b中从偏移量off开始的len个字节的数据。
其它方法
void flush() :刷新输出流,强制缓冲区中的输出字节被写出。
void close() :关闭输出流,释放和这个流相关的系统资源。

基本的流类:
FileInputStream和FileOutputStream
    节点流,用于从文件中读取或往文件中写入字节流。如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件。
BufferedInputStream和BufferedOutputStream
    过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。
DataInputStream和DataOutputStream
      过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。
PipedInputStream和PipedOutputStream
    管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。


import java.io.*;
class StreamTest
{
 public static void main(String[] args)  throws Exception
 {
 /*
  int data;
  while((data=System.in.read()) != -1)
  {
   System.out.write(data);
  }
 */
  /*
  FileOutputStream fos = new FileOutputStream("1.txt");
  //write方法只能写入字节数组,不能操作字符串;通过String类的getBytes方法返回一个字节数组
  fos.write("www.baidu.com".getBytes());
  fos.close();
  BufferedOutputStream bos = new BufferedOutputStream("fos");
  bos.write("www.baidu.com".getBytes());
  bos.flush();   //刷新缓冲区
  DataOutputStream dos = new DataOutputStream(bos);
  byte b = 1;
  char c = 'a';
  dos.writeByte(b);
  dos.writeChar(c);
  dos.close();
  
  FileInputStream fis = new FileInputStream("1.txt");
  byte[] buf = new byte[100];
  int len = fis.read(buf);
  BufferedInputStream bis = new BufferedInputStream(fis);
  int len = bis.read(buf);
  //String方法构造一个字符串
  System.out.println(new String(buf, 0, len));
  DataInputStream dis = new DataInputStream(bis);
  System.out.println(dis.readByte());
  System.out.println(dis.readChar());
  fis.close();
  */
  
  //OutputStreamWriter和InputStreamReader是字节流和字符流直接的桥梁
  //BufferedWriter和BufferedReader是操作字符流的类
  //OutputStream和InputStream是操作字节流的类
  FileOutputStream fos = new FileOutputStream("2.txt");
  OutputStreamWriter osw = new OutputStreamWriter(fos);
  BufferedWriter bw = new BufferedWriter(osw);
  bw.write("www.baidu.com");
  
  FileInputStream fis = new FileInputStream("2.txt");
  InputStreamReader isr = new InputStreamReader(fis);
  BufferedReader bw = new BufferedReader(isr);
  bw.readLine();
 }
}

相关文章
|
9天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
25 0
|
14天前
|
Java Unix Windows
|
9天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(<https://www.sojump.com/m/2792226.aspx/>)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
23 0
|
1天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
8 0
|
3天前
|
存储 缓存 Java
Java IO 流详解
Java IO 流详解
12 1
|
7天前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
11 2
|
7天前
|
存储 Java
Java的`java.io`包包含多种输入输出类
Java的`java.io`包包含多种输入输出类。此示例展示如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着分配一个`byte`数组存储流中的数据。通过`read()`方法读取数据,然后将字节数组转换为字符串打印。最后关闭输入流释放资源。`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
16 1
|
8天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
19 2
|
9天前
|
存储 NoSQL 安全
java 中通过 Lettuce 来操作 Redis
java 中通过 Lettuce 来操作 Redis
java 中通过 Lettuce 来操作 Redis
|
10天前
|
分布式计算 DataWorks 监控
DataWorks操作报错合集之DataWorks在调用java sdk的createFile功能时报错com.aliyuncs.exceptions.ClientException: 1201111000 如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
11 1