标签: java-io

如何知道一个文件代表的是根目录还是我的电脑?

我有一个java.io.File对象,但我不知道它对应于哪个对象。使用该isDirectory()方法我们可以检查它是否是一个目录。普通文件夹和驱动器在调用时都会返回 trueisDirectory()

我如何检查对象File是驱动器还是我的电脑?

java java-io java.nio.file

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

Java 套接字丢失数据:BufferedReader

我在 Java 中遇到以下问题:我正在开发和应用程序使用java.net.Socket. 它看起来像这样:有一个服务器,它有一个线程,它接受并添加新客户端,另一个线程从套接字读取数据并用它做“某事”。旁边是客户。客户端具有数据读取器线程以及单独的线程。我发送的数据很简单:

socket.getOutputStream().write((content+"\n").getBytes());
Run Code Online (Sandbox Code Playgroud)

在客户端并在服务器上读取它,例如:

try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    String received;
    while(true) {
        try {
            reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            received = reader.readLine();
            if(received == null) {
                break;
            }
            System.out.println("SERVER " + received);
            increaseReceivedCounter(1);
        } catch(SocketException e) {
            break;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    System.out.println("SERVER RECEIVED "+ getReceivedCounter() + " MESSAGES!");
}
Run Code Online (Sandbox Code Playgroud)

现在我只是设置客户端发送一些这样的消息:

try {
    int n = 1000;
    System.out.println("sending "+ …
Run Code Online (Sandbox Code Playgroud)

java sockets tcp bufferedreader java-io

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

将 outputStream 转换为字节数组

如何获取 outputStream 的字节,或者如何将 outputStream 转换为字节数组?

java outputstream java-io

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

如何转换 PNG<->JPEG<->TIFF 图像

有什么方法可以在 Java 中转换 PNG<->JPEG<->TIFF 图像吗?我有 String i/p 将参数(PNG 或 JPEG 转换为 []byte,然后转换为 String)传递给 ConvertImage(String xyz) 方法。

字符串转换图像(字符串xyz)

所以我正在寻找从单一方法进行以下转换并返回字节数组或字符串,最后我想存储在数据库中。

1.如果i/p是PNG转换的o/p是JPEG

2.如果i/p是JPEG转换的o/p是PNG

3.如果 i/p 是 PNG 或 JPEG 转换后的 o/p 是 TIFF

我现在正在使用 JAI 进行此转换(在我的上一篇文章中,我没有提到所有这些细节,对此感到抱歉),但现在不想使用 JAI。

如果您对所有这 3 种类型有任何快速解决方案,请告诉我?

提前非常感谢!

java java-io

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

带/不带 TRUNCATE_EXISTING 的 StandardOpenOption.WRITE + StandardOpenOption.CREATE 之间的区别?

可能是一个简单的答案,但我尝试阅读有关 StandardOpenOption 的 javadoc 文档,但我仍然不清楚当我说时会发生什么

Files.write(..., ..., StandardOpenOption.WRITE, StandardOpenOption.CREATE); // Write A

根据一些本地测试,看起来如果文件已经存在,这仍然会覆盖该文件,那么上面和上面有什么区别

Files.write(..., ..., StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE); // Write B

此外,我有一个带有两个线程的程序,可以从写入的文件中读取/写入。当我使用 Write B 时,我有时会遇到竞争条件,其中一个线程创建了该文件,而另一个线程在第一个线程正在读取时覆盖该文件,并且出现异常。但是当我使用 Write A 时,我永远不会遇到这种竞争条件。几乎就像它会先锁定文件一样?有人可以解释幕后发生了什么吗?

java nio file java-io

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

字节流的内部工作。write(65) 和 write('A') 的区别?

这两个行会我写字母Afile。有人能告诉我他们在内部工作上有什么不同吗?

FileOutputStream fileOutputStream = new FileOutputStream("test.txt");
fileOutputStream.write(65);
fileOutputStream.write('A');
Run Code Online (Sandbox Code Playgroud)

[编辑]:我对转换在这两种情况下的工作方式更感兴趣。据我所知,ASCII 和 UNICODE 表是什么。

java file-writing java-io bytestream

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

来自java的readXmlfile

您好我已经在java中编写了一个小类来读取xml文件中的字符串,而不是我的问题如下:如何追加字符串以便它只输出Physical_Order_List_Array标签之间的内容

这是一个java类:

public static String getFileContent(String fileName)
    {
        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();
        try {
            br = new BufferedReader(new FileReader(fileName));
        try {
            String s;
            while((s = br.readLine()) != null)
            {
                sb.append(s);
                sb.append("\n");
            }
        }

        finally {
            br.close();
        }
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
        return sb.toString();
    }
Run Code Online (Sandbox Code Playgroud)

这里有一些xml文件非常大:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
.....
.....
.....some content
....here is what I only need 
<Physical_Order_List_Array>
....now I need to get this portion of the code, append string …
Run Code Online (Sandbox Code Playgroud)

java java-io

0
推荐指数
1
解决办法
122
查看次数

为什么是人物流?

我理解Java字符流包装字节流,以便根据系统默认值或其他特定定义的字符集来解释基础字节流.

我的系统默认字符集是UTF-8.

如果我使用a FileReader来读取文本文件,一切看起来都很正常,因为默认的char-set用于解释底层的字节InputStreamReader.如果我明确定义一个InputStreamReader以UTF-16格式读取UTF-8编码的文本文件,那么一切看起来都很奇怪.使用类似的字节流FileInputStream并将其输出重定向到System.out,一切看起来都很好.

所以,我的问题是;

  • 为什么使用字符流很有用?

  • 为什么我会使用字符流而不是直接使用字节流?

  • 什么时候定义特定的字符集很有用?

java iostream java-io

0
推荐指数
1
解决办法
1153
查看次数

Blasted java.lang.NullPointerException

我的应用程序旨在将正好1500个项目的现有文本文件(一行一行)读入一个项目类对象数组中.目标是将数据放入数组中,这样我就可以将此应用程序用作转换存档以获取我正在编写的新程序的起点.

package sandboxPackage;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class mainClass {
    public static void main(String[]args) throws FileNotFoundException, IOException {
    InputStream in = new FileInputStream(new File("C:\\Documents and Settings\\Adam\\Desktop\\Cloud Project\\MasterIndex.library"));
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    StringBuilder out = new StringBuilder();
    String line;
    itemClass[] m = new itemClass[1500];
    int i = 0;
    while ((line = reader.readLine()) != null) {
        m[i].index = line;       // crash is here
        m[i].location = reader.readLine();
        m[i].item = reader.readLine(); …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception java-io

0
推荐指数
1
解决办法
198
查看次数

为什么Files.deleteIfExists对于大型文件要花这么长时间?

在大文件上(在此处35GB):

Files.deleteIfExists(Path.get("large.csv"));

使用java进行删除需要60秒以上的时间。rm large.csv在控制台上删除片刻。

为什么?我可以加快从Java内部删除大文件的速度吗?

java java-io

0
推荐指数
1
解决办法
107
查看次数