标签: java-io

我应该缓冲InputStream还是InputStreamReader?

以下两种缓冲方法之间有什么不同(如果有的话)?

Reader r1 = new BufferedReader(new InputStreamReader(in, "UTF-8"), bufferSize);
Reader r2 = new InputStreamReader(new BufferedInputStream(in, bufferSize), "UTF-8");
Run Code Online (Sandbox Code Playgroud)

java bufferedinputstream buffering bufferedreader java-io

27
推荐指数
2
解决办法
3万
查看次数

将InputStream传递给OutputStream的最佳方法

我试图找到将InputStream传递给OutputStream的最佳方法.我没有选择使用任何其他库,如Apache IO.这是片段和输出.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.channels.FileChannel;

public class Pipe {
    public static void main(String[] args) throws Exception {

        for(PipeTestCase testCase : testCases) {
            System.out.println(testCase.getApproach());
            InputStream is = new FileInputStream("D:\\in\\lft_.txt");
            OutputStream os = new FileOutputStream("D:\\in\\out.txt");

            long start = System.currentTimeMillis();            
            testCase.pipe(is, os);
            long end = System.currentTimeMillis();

            System.out.println("Execution Time = " + (end - start) + " millis");
            System.out.println("============================================");

            is.close();
            os.close();
        }

    }

    private static PipeTestCase[] testCases = {

        new PipeTestCase("Fixed Buffer Read") {         
            @Override …
Run Code Online (Sandbox Code Playgroud)

java pipe java-io

27
推荐指数
4
解决办法
5万
查看次数

Java的.如何将文本附加到file.txt的顶部

我需要通过Java添加文本到文本文件的开头.

例如,我有带有数据的test.txt文件:

Peter
John
Alice
Run Code Online (Sandbox Code Playgroud)

我需要添加(到文件顶部):

Jennifer 
Run Code Online (Sandbox Code Playgroud)

它应该是:

Jennifer
Peter
John
Alice
Run Code Online (Sandbox Code Playgroud)

我有部分代码,但它将数据附加到文件末尾,我需要将文本添加到文件顶部:

    public static void irasymas(String irasymai){
        try {
         File file = new File("src/lt/test.txt");

                if (!file.exists()) {
                file.createNewFile();
            }

            FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(irasymai+ "\r\n");
            bw.close();
} 
       catch (IOException e) {
        e.printStackTrace();                
        }
    }
Run Code Online (Sandbox Code Playgroud)

我试过这个,但这只删除了文件中的所有数据而没有插入任何文本:

public static void main(String[] args) throws IOException {
        BufferedReader reader = null;
        BufferedWriter writer = null;
        ArrayList list = new ArrayList();

        try {
            reader = new BufferedReader(new …
Run Code Online (Sandbox Code Playgroud)

java text file append java-io

25
推荐指数
2
解决办法
5万
查看次数

java.io.File vs java.nio.Files这是新代码中的首选?

在围绕SO编写答案时,用户试图指出不java.io.File应该在新代码中使用,而是他认为应该使用对象java.nio.Files; 他链接到这篇文章.

现在我已经用Java开发了好几年了,之前没有听过这个论点; 自从阅读他一直在寻找的帖子,并没有找到许多证实这一点的其他消息来源,而且就个人而言,我觉得文章中提出的许多观点都很薄弱,如果你知道如何阅读它们,那么文件类通常会告诉您具体问题.

当我不断开发新代码时,我的问题是:

这是Java社区中的一个活跃的参数吗?是文件优于文件对新代码?两者之间的主要优点/缺点是什么?

java io nio file java-io

24
推荐指数
3
解决办法
1万
查看次数

BufferedReader中的缓冲区大小是多少?

构造函数中缓冲区大小的含义是什么?

BufferedReader(Reader in, int size)
Run Code Online (Sandbox Code Playgroud)

正如我写的程序:

import java.io.*;
class bufferedReaderEx{
    public static void main(String args[]){
        InputStreamReader isr = null;
        BufferedReader br = null;
            try{
                isr = new InputStreamReader(System.in);
//              System.out.println("Write data: ");
//              int i = isr.read();
//              System.out.println("Data read is: " + i);
                //Thus the InputStreamReader is useful for reading the character from the stream
                System.out.println("Enter the data to be read by the bufferedReader: ");
                //here isr is containing the lnefeed already so this is needed to be flushed. …
Run Code Online (Sandbox Code Playgroud)

java bufferedreader java-io

23
推荐指数
3
解决办法
6万
查看次数

读取字符行并获取文件位置

我正在从文本文件中读取连续的字符行.文件中字符的编码可能不是单字节.

在某些时候,我想获得下一行开始的文件位置,这样我可以稍后重新打开文件并快速返回到该位置.

问题

是否有一种简单的方法可以做到这两点,最好是使用标准的Java库?

如果没有,什么是合理的解决方法?

理想解决方案的属性

理想的解决方案是处理多种字符编码.这包括UTF-8,其中不同的字符可以用不同的字节数表示.理想的解决方案主要依赖于受信任且支持良好的库.最理想的是标准Java库.第二好的是Apache或Google库.解决方案必须是可扩展的.将整个文件读入内存不是一种解决方案.返回位置不应要求在线性时间内读取所有先前字符.

细节

对于第一个要求,BufferedReader.readLine()是有吸引力的.但缓冲显然会干扰获得有意义的文件位置.

不太明显,InputStreamReader也可以提前读取,干扰获取文件位置.从InputStreamReader文档:

为了能够有效地将字节转换为字符,可以从基础流中提取比满足当前读取操作所需的更多字节.

该方法RandomAccessFile.readLine() 每个字符读取一个字节.

通过取字符的低八位的字节值并将字符的高八位设置为零,将每个字节转换为字符.因此,此方法不支持完整的Unicode字符集.

java nio java-io

22
推荐指数
1
解决办法
8544
查看次数

如何在目录/文件夹中查找子目录?

我正在寻找一种方法来获取给定目录中的所有目录名称,但不是文件.

例如,假设我有一个名为的文件夹Parent,在里面我有3个文件夹:Child1 Child2Child3.

我想获取文件夹的名称,但不关心Child1,Child2等内的子文件夹的内容或名称.

有一个简单的方法吗?

java directory java-io

21
推荐指数
2
解决办法
7万
查看次数

使用java将透明gif/png转换为jpeg

我想使用Java将gif图像转换为jpeg.它适用于大多数图像,但我有一个简单的透明gif图像:

输入gif图像http://img292.imageshack.us/img292/2103/indexedtestal7.gif

[如果图像丢失:它是一个蓝色圆圈,周围有透明像素]

当我使用以下代码转换此图像时:

File file = new File("indexed_test.gif");
BufferedImage image = ImageIO.read(file);
File f = new File("indexed_test.jpg");
ImageIO.write(image, "jpg", f);
Run Code Online (Sandbox Code Playgroud)

此代码可以在不抛出异常的情况下工作,但会导致无效的jpeg图像:

输出jpeg图像

[如果图像丢失:IE无法显示jpeg,Firefox会显示无效颜色的图像.]

我正在使用Java 1.5.

我还尝试使用gimp将示例gif转换为png并使用png作为Java代码的输入.结果是一样的.

这是JDK中的错误吗?如何在没有第三方库的情况下正确转换图像?

更新:

答案表明jpeg转换无法正确处理透明度(我仍然认为这是一个错误)并建议使用预定义颜色替换透明像素的解决方法.这两种建议的方法都非常复杂,所以我实现了一个更简单的方法(将作为答案发布).我接受了第一个已发布的答案(Markus).我不知道哪种实现更好.我选择了最简单的一个,但我发现它不起作用的gif.

java transparency jpeg gif java-io

20
推荐指数
3
解决办法
3万
查看次数

Java I/O流; 有什么区别?

java.io有许多不同的I/O流,(FileInputStream,FileOutputStream,FileReader,FileWriter,BufferedStreams ......等),我很困惑,在确定它们之间的差异.有哪些例子表明一种流类型优先于另一种流类型,它们之间的真正区别是什么?

java io stream java-io

20
推荐指数
5
解决办法
2万
查看次数

如何从资源文件夹中获取文件.Spring框架

我正在尝试解组我的xml文件:

public Object convertFromXMLToObject(String xmlfile) throws IOException {
    FileInputStream is = null;
    File file = new File(String.valueOf(this.getClass().getResource("xmlToParse/companies.xml")));
    try {
        is = new FileInputStream(file);
        return getUnmarshaller().unmarshal(new StreamSource(is));
    } finally {
        if (is != null) {
            is.close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:java.io.FileNotFoundException:null(没有这样的文件或目录)

这是我的结构:

在此输入图像描述

为什么我无法从资源文件夹中获取文件?谢谢.

更新.

重构后,

URL url = this.getClass().getResource("/ xmlToParse/companies.xml"); 文件文件=新文件(url.getPath());

我可以更清楚地看到错误:

java.io.FileNotFoundException:/content/ROOT.war/WEB-INF/classes/xmlToParse/companies.xml(没有这样的文件或目录)

它试图找到WEB-INF/classes /我在那里添加了文件夹,但仍然收到此错误:(

在此输入图像描述

java spring-mvc fileinputstream java-io

19
推荐指数
3
解决办法
6万
查看次数