关于Guava中I/O中CharStreams类的各个方法的解读

本文介绍了Java中CharStreams类的多种实用方法,包括字符串处理、文件读写、数据拷贝等功能,帮助开发者高效地进行IO操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.1 newReaderSupplier(String value)

public static InputSupplier<StringReader>newReaderSupplier(String value)

       该方法是将输入的String串,做成一个含有StringReader的InputSupplier对象,并返回。

3.2newReaderSupplier(InputSupplier, Charset)

public static InputSupplier<InputStreamReader>newReaderSupplier(InputSupplier<? extends InputStream> in, Charsetcharset)

该方法是根据输入工厂里的内容转化成包含InputStreamReader的InputSupplier的对象,并返回。

3.3 newWriterSupplier(OutputSupplier,Charset)

public static OutputSupplier<OutputStreamWriter> newWriterSupplier(OutputSupplier<?extends OutputStream> out, Charset charset)

该方法是将包含有OutputStream的输出工厂转化成编码格式为charset的包含OutputStreamWriter的输出工厂对象,并返回。

3.4 write(CharSequence from,OuputSupplier<W> to)

public static <W extends Appendable & Closeable> voidwrite(CharSequence from, OuputSupplier<W> to)

该方法是将一个字符串写入到一个Appendable对象里。

使用方法:

CharStream.write(“haha”,CharStreams.newWriterSupplier(Files.newOutputSupplier(f), CharSets.UTF-8));

3.5 copy(InputSupplier<R>from, OutputSupplier<W> to)

public static <R extends Readable & Closeable, W extendsAppendable & Closeable> long copy(InputSupplier<R> from,OutputSupplier<W> to)

该方法是打开InputSupplier提供的Readable对象,然后把数据拷贝到由OutputSupplier提供的Appendable对象里。

使用方法:

CharStreams.copy(CharStreams.newReaderSupplier("woshi hushichang"),CharStreams.newWriterSupplier(Files.newOutputStreamSupplier(file),Charsets.UTF_8));

3.6 copy(InputSupplier<R>from, Appendable to)

public static <R extends Readable & Closeable> longcopy(InputSupplier<R> from, Appendable to)

该方法是取出由InputSupplier提供的Readable对象的数据,拷贝到Appendable对象里,然后关闭输入流,不会关闭输出流。

使用方法:

StringBuffer stringBuffer = newStringBuffer("hehe");

CharStreams.copy(CharStreams.newReaderSupplier("nihao"), stringBuffer);

3.7 copy(Readable from, Appendableto)

public static long copy(Readable from, Appendable to)

该方法是把Readable对象里的数据全部拷贝到Appendable对象里。不会关闭任何对象。

使用方法:

BufferedReader bReader = new BufferedReader(newFileReader(file));

CharStreams.copy(bReader, stringBuffer);

bReader.close();

3.8 toString(Readable r)

public static String toString(Readable r)

该方法是将Readable对象里的数据转化成一个String串,不会关闭任何对象

使用方法:

BufferedReader bReader = new BufferedReader(newFileReader(file));

String str = CharStreams.toString(bReader);

bReader.close();

3.9 toString(InputSupplier<R>supplier)

public static <R extends Readable & Closeable> StringtoString(InputSupplier<R> supplier)

该方法是把InputSupplier提供的Readable对象里的数据转换成String,并返回。

使用方法:

String str =

CharStreams.toString(CharStreams.newReaderSupplier(Files.newInputStreamSupplier(file),Charsets.UTF_8))

3.10 readFirstLine(InputSupplier<R>supplier)

public static <R extends Readable & Closeable> StringreadFirstLine(InputSupplier<R> supplier)

该方法会读取由InputSupplier提供的Readable对象中的第一行数据,这一行数据不会包含终结符,但是会包含其他的空格之类的字符。

使用方法

String str =

CharStreams.readFirstLine(CharStreams.newReaderSupplier(Files.newInputStreamSupplier(file),Charsets.UTF_8));

3.11readLines(InputSupplier<R> supplier)

public static <R extends Readable & Closeable>List<String> readLines(InputSupplier<R> supplier)

该方法和上边的差不多,只不过上边的读出第一行,这个读出所有的行

使用方法:

把上边的str换成List<String>就行了

3.12 readLines(Readable r)

public static List<String> readLines(Readable r)

该方法和上面的功能一行,只不过是从Readable对象里读取数据。

使用方法见上面。

3.13readLines(InputSupplier<R>, LineProcessor<T>)

public static <R extends Readable & Closeable, T> TreadLines(InputSupplier<R> supplier, LineProcessor<T> callback)

该方法是从InputSupplier提供的Readable或者Closeable对象里读取数据,如果读取完毕或者callback返回false就停止。而这个callback是可以自己控制的,自己定义检查的项目。

使用方法:

File file = new File("b.txt");

ArrayList<String> list =CharStreams.readLines(Files.newReaderSupplier(file, Charsets.UTF_8), newLineProcessor<ArrayList<String>>() {

 

                     ArrayList<String>result = new ArrayList<String>();

                     @Override

                     publicArrayList<String> getResult() {

                            //TODO Auto-generated method stub

                            returnresult;

                     }

 

                     @Override

                     publicboolean processLine(String line) throws IOException {

                            result.add(line.trim());

                            //TODO Auto-generated method stub

                            if(line.contains("haha"))

                                   returnfalse;

                            elsereturn true;

                     }

              });

3.14 join(Iterable  suppliers)

public static InputSupplier<Reader> join(Iterable<? extendsInputSupplier<? extends Reader>> suppliers)

该方法是把一些InputSupplier提供的Reader中的数据汇聚到一个Reader对象里边,然后封装到一个InputSupplier里边,并返回。

使用方法上面已经介绍过类似的,这里不作介绍。

3.15 join(InputSupplier<?extends Reader> … suppliers)

public static InputSupplier<Reader> join(InputSupplier<?extends Reader> … suppliers)

该方法里的参数不定的,功能是跟上一个一样的。

3.16 skipFully(Reader reader, longn)

public static void skipFully(Reader reader, long n)

该方法是丢弃Reader对象里的前n个数据。

使用方法:

BufferedReader bReader = new BufferedReader(newFileReader("b.txt"));

CharStreams.skipFully(bReader, 2);

System.out.println(CharStreams.toString(bReader));

bReader.close();

3.17 asWriter(Appendable target)

public static Writer asWriter(Appendable target)

该方法是把Appendable对象当做一个Writer对象来操作,所有这个Writer对象操作的都相当于Appendable对象操作的。

使用方法:

StringBuffer stringBuffer = new StringBuffer();

Writer writer =CharStreams.asWriter(stringBuffer);

writer.append("abbb");

System.out.println(stringBuffer);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值