java stream load方式写入doris java streamreader_路径名

 

yi、控制台输入输出流,

1、读取控制台输入

  Java的控制台输入由System.in完成。为了获得一个绑定到控制台的字符流,可以把System.in包装在一个BufferedReader对象中来创建一个字符流,创建BufferedReader的语法如下:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

  BufferedReader对象创建后,可以通过read()方法从字符流中读取一个字符;或者通过readLine()方法从字符流中读取一个字符串。



package cuiyuee;
import java.io.*;

public class BRRead {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        char c;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("输入字符,按下q键退出。");
        do{
            c = (char)br.read();
            System.out.println(c);
        }while(c != 'q');
    }
    
}



package cuiyuee;
import java.io.*;

public class BRReadLine {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str ;
        System.out.println("请输入一个字符串,输入'End'自动退出:");
        do{
            str = br.readLine();
            System.out.println(str);
        }while(!str.equals("end"));
    }

}



 

2、控制台输出

  控制台的输出由print()和println()完成,这些方法都由类PrintStream定义,System.out是该类对象的一个引用。

  PrintStrea继承了OutputStream类,也可以用write()方法进行向控制台的写操作。但常用print()和println()



package cuiyuee;
import java.io.*;

public class writeDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int b ;
        b = 'A';
        System.out.write(b);
        System.out.write('\n');
    }

}



 

二、文件读写流,FileInputStream和FileOutputStream

1、FileInputStream,该流用于从文件读取数据,有多种方法可以用来创建对象。

  1.1、可以用字符串类型的文件名来创建一个输入流对象来读取文件。

      InputStream f = new FileInputStream("C:/java/hello");

  1.2、也可以使用一个文件对象来创建一个输入流对象来读取文件,首先需要用File()方法创建一个文件对象

      File f = new File("C:/java/hello");

      InputStream f = new FileInputStream(f);

  1.3、创建了InputStream对象就可以使用以下方法来读取流或者进行其他的流操作。

序号

方法

1

public void close() throws IOException()

关闭此文件输入流并释放与此流有关的所有系统资源。跑出IOException异常

2

finalize(),清除与这个文件的连接,确保在不再引入文件输入流时调用期close方法。

3

read(int r),从InputStream对象中读取指定字节的数据,返回为整数值。返回为下一字节数据。如果已经到结尾,则返回为-1.

4

read(byte[] r),从输入流读取r.length长度的字节,返回读取的字节数,如果是文件结尾则返回-1.

5

available(),返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。

 

 

 

 

 

 

 

2、FileOutputStream,该类用来创建一个文件并向文件中写数据

    2.1、如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

        有两个构造方法可以用来创建 FileOutputStream 对象。

        使用字符串类型的文件名来创建一个输出流对象:



        OutputStreamfnewFileOutputStream("C:/java/hello")



    2.2、也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:



        FilefnewFile("C:/java/hello");



fnewFileOutputStream(f); 



代码示例如下



package cuiyuee;
import java.io.*;

public class FileStreamTest2 {

    public static void main(String[] args) throws IOException{
        // TODO Auto-generated method stub
        File f = new File("C:/java/hello.txt");
        FileOutputStream fop = new FileOutputStream(f);
        //构建FileOutputStream对象,文件不存在会自动新建
        
        OutputStreamWriter writer = new OutputStreamWriter(fop,"UTF-8");
        //构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows为gbk
        
        writer.append("中文输入");
        //写入到缓冲区
        
        writer.append("\r\n");
        //换行
        
        writer.append("English");
        //刷新缓存,写入到文件,如果下面已经没有写入内容了,直接close也可写入
        
        writer.close();
        //关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
        
        fop.close();
        //关闭输出流,释放系统资源
        
        FileInputStream fip = new FileInputStream(f);
        //构建FileInputStream对象
        
        InputStreamReader reader = new InputStreamReader(fip,"UTF-8");
        //构建InputStreamReader对象,编码与写入相同
        
        StringBuffer sb = new StringBuffer();
        while(reader.ready()){
            sb.append((char) reader.read());
            //转成char加到StringBuffer对象中
        }
        System.out.println(sb.toString());
        reader.close();
        //关闭读取流
        
        fip.close();
        //关闭输入流,释放系统资源
        
    }

}



 

三、还有一些关于文件和IO的类

1、Java File类

  Java文件类以抽象的方式代表文件名和目录路径名,该类主要用于文件和目录的创建,文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录。通过以下构造方法创建一个File对象。

  1.1、通过将给定路径名字符串转换成抽象路径名来创建一个新File实例。

  File(File parent,String child);

  1.2、通过将给定路径名字符串转换成抽象路径名来创建一个新File实例。

  File(String pathname)

  1.3、通过parent路径名字符串和child路径名字符串创建一个新File实例。

  File(String parent,String child)

  1.4、通过将给定的file:URI转换成一个抽象路径名来创建一个新的File实例。

  File(URI uri)

  1.3、创建File对象成功后,可以使用以下列表中的方法操作文件。

  public String getName():返回由此抽象路径名表示的文件或目录的名称。

  public String getParent():返回此抽象路径名的父路径名的路径名字符串,如果没有指定父目录,则返回null。

  getParentFile():返回父路径名的抽象路径名。

  getPath():将此抽象路径名转换为一个路径名字符串。

  public boolean isAbsolute():测试此抽象路径名是否为绝对路径名。

  public String getAbsolutePath():返回抽象路径名的绝对路径名字符串。

  public boolean canRead():测试应用程序是否可以读取此抽象路径名表示的文件。

  public boolean canWrite():测试应用程序是否可以修改此抽象路径名表示的文件。

  public boolean exists():测试此抽象路径名表示的文件或者目录是否存在。

  public boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。

  public boolean isFile():是否是一个标准文件。

  public long lasModified():返回此抽象路径名表示的文件最后一次被修改的时间。

  public long length():返回此抽象路径名表示的文件的长度。

  public boolean createNewFile() throws IOException:不存在此文件时,创建新的空文件

  public boolean delete():删除此抽象路径名表示的文件或目录。

  public void deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

  public String[] list():返回此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。

  public String[] list(FilenameFilter filter):返回此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定的过滤器。

  public boolean mkdir():创建此抽象路径名指定的目录。

  public boolean mkdirs():创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。

  public boolean renameTo(File dest):重新命名此抽象路径名表示的文件。

  public boolean setLastModified(long time):设置由此抽象路径名所指定的文件或目录的最后一次修改时间。

  public boolean setReadOnly():标记此抽象路径名指定的文件或目录,以便只可以对其进行读操作。

  public static File createTempFile(String prefix,String suffix,File directory) throws IOException:在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。

  public static File createTempFile(String prefix,String suffix) throws IOException:在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。

  public int compareTo(File pathname):按字母顺序比较两个抽象路径名

  public int compareTo(Object o):按字母顺序比较抽象路径名与给定对象。

  public boolean equals(Object obj):测试此抽象路径名与给定对象是否相等。

  public String toString():返回此抽象路径名的路径名字符串。

 

 

2. Java FIleReader类

  FileReader类从InputStreamReader类继承而来,该类按字符读取流中数据,可以通过以下几种构造方法创建需要的对象。

  2.1、在给定从中读取数据的File的情况下创建一个新的FileReader。

    FileReader(File file);

  2.2、在给定从中读取数据的FileDescriptor的情况下创建一个新

    FileReaderFileReader(FileDescriptor fd);  

  2.3、在给定从中读取数据的文件名的情况下创建一个新FileReader。

    FileReader(String fileName)

  创建FileReader对象成功后,有以下方法可使用。

  public int read() throws IOException:读取单个字符,返回一个int型变量代表读取到的字符。

  public int read(char[] c, int offset, int len):读取字符到c数组,返回读取到字符的个数。

  



package cuiyuee;
import java.io.*;

public class FileReaderTest {
    public static void main(String args[])throws IOException{
        File file = new File("Hello1.txt");//创建文件
        file.createNewFile();//创建FileWriter对象
        FileWriter writer = new FileWriter(file);
        
        //向文件写入内容
        writer.write("This is an example");
        writer.flush();
        //FileWriter的flush()方法是从OutputStreamWriter中继承来的,其作用就是清空缓冲区并完成文件写入操作的
        writer.close();
        //创建FileReader对象
        FileReader fr = new FileReader(file);
        char[] a = new char[50];
        fr.read(a);//读取数组中的内容
        for(char c:a){
            System.out.println(c);//一个一个打印字符
        }
        fr.close();
    }
    
}



 


 


3.JavaFileWriter类



  

FileWriter类从OutputStreamReader类继承而来。该类按字符向流中写入数据。可以通过以下几种构造方法创建需要的对象。

在给出 File 对象的情况下构造一个 FileWriter 对象。

FileWriter(File file)

在给出 File 对象的情况下构造一个 FileWriter 对象。

FileWriter(File file, boolean append)

构造与某个文件描述符相关联的 FileWriter 对象。

FileWriter(FileDescriptor fd)

在给出文件名的情况下构造 FileWriter 对象,它具有指示是否挂起写入数据的 boolean 值。

FileWriter(String fileName, boolean append)

常用方法:
public void write(int c)throws IOException:写入单个字符
public void write(char[] c, int offset, int len):写入字符数组中开始为offset长度为len的某一部分。
public void write(String s, int offset, int len):写入字符串中开始为offset长度为len的某一部分。



package cuiyuee;
import java.io.*;

public class FileWriterTest {

    public static void main(String[] args)throws IOException{
        // TODO Auto-generated method stub
        File file = new File("F:\\today.txt");
        if(!file.exists()){//如果文件不存在,就在F盘下创建today.txt文件
            file.createNewFile();            
        }
        FileWriter writer = new FileWriter(file);
        writer.write("Hello,I Love You.");
        writer.flush();
        writer.close();
        
        //创建FileReader对象
        FileReader fr = new FileReader(file);
        char[] a = new char[50];
        fr.read(a);
        for(char c:a){
            System.out.println(c);
        }
        fr.close();
    }

}



 

四、Java中的目录

  File类中有两个方法可以用来创建文件夹

    mkdir():成功返回true,失败返回false,失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。

    mkdirs():创建一个文件夹和它所有的父文件夹。



package cuiyuee;
import java.io.File;
import java.io.File.*;

public class DirTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String dirname = "F:/tmp/user/java/bin";
        //'\'在Java中是转义字符,所以建议在Windows环境和Linux环境下,用/,创建目录用/
        File d = new File(dirname);
        d.mkdirs();
    }

}



 

删除目录或文件

删除文件可以使用java.io.File.delete()方法。

测试目录F:\java\childDirectory



package cuiyuee;
import java.io.File.*;
import java.io.File;

public class DeleteFile {
    public static void deleteFolder(File folder){
        File[] files = folder.listFiles();
            if(files!=null){
                for(File f:files){
                    if(f.isDirectory()){
                        deleteFolder(f);
                    }else{
                        f.delete();
                    }
                }
            }
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File folder = new File("F:\\java");
        deleteFolder(folder);
    }

}