Tag: io

FileOutputStream:“close”方法是否也调用“flush”?

我真的很困惑flush和close方法。在我的代码中,我总是关闭我的FileOutputStream对象。 但我想知道如果我必须在这里使用flush方法,我在哪里可以使用它? 我将编写一个重复下载4或5个文件的项目。 我将编写一个方法(用于下载文件),我的方法将循环并重复下载文件。我的方法将有这样的代码。 close方法是否调用flush ,或者在关闭之前是否必须使用flush? try { InputStream inputStream = con.getInputStream(); FileOutputStream outputStream = new FileOutputStream(“C:\\programs\\TRYFILE.csv”); int bytesRead = -1; byte[] buffer = new byte[4096]; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } } catch(Exception e) { // } finally { outputStream.close(); inputStream.close(); } 请注意,代码运行良好:它成功下载文件。 但我不确定使用flush 。

如何从JAVA中的文本文件中读取逗号分隔值?

我有这个文本文件,其中包含地图上不同点的纬度和经度值。 我想使用hibernate将这些坐标存储到mySQL数据库中。 我想知道如何将我的弦乐分成纬度和经度? 与空间,制表符等其他分隔符一起执行这些类型的事物的一般方法是什么? 文件: 28.515046280572285,77.38258838653564 28.51430151808072,77.38336086273193 28.513566177802456,77.38413333892822 28.512830832397192,77.38490581512451 28.51208605426073,77.3856782913208 28.511341270865113,77.38645076751709 28.510530488025346,77.38720178604126 28.509615992924807,77.38790988922119 28.50875805732363,77.38862872123718 28.507994394490268,77.38943338394165 28.50728729434496,77.39038825035095 28.506674470385246,77.39145040512085 28.506174780521828,77.39260911941528 28.505665660113582,77.39376783370972 28.505156537248446,77.39492654800415 28.50466626846366,77.39608526229858 28.504175997400655,77.39724397659302 28.503685724059455,77.39840269088745 28.503195448440064,77.39956140518188 28.50276174118543,77.4007523059845 28.502309175192945,77.40194320678711 28.50185660725938,77.40313410758972 28.50140403738471,77.40432500839233 28.500951465568985,77.40551590919495 28.500498891812207,77.40670680999756 28.5000463161144,77.40789771080017 28.49959373847559,77.40908861160278 我用来读取文件的代码: try { BufferedReader in = new BufferedReader(new FileReader(“G:\\RoutePPAdvant2.txt”)); String str; str = in.readLine(); while ((str = in.readLine()) != null) { System.out.println(str); } […]

同时读取文件(首选java)

我有一个需要几个小时才能处理的大文件。 所以我正在考虑尝试估计块并且并行读取块。 是否可以在单个文件上并发读取? 我已经查看了RandomAccessFile以及nio.FileChannel但基于其他post我不确定这种方法是否有效。

从java调用R脚本

我想从Java调用R脚本。 我已经对该主题进行了谷歌搜索,但我看到的几乎所有结果都要求我向某些第三方库添加依赖项。 任何人都可以告诉我一个很好的方法来完成同样的事情而不添加任何依赖我的代码? 我正在使用Windows机器,所以也许我可能会使用命令行启动R(如果它尚未打开)并运行特定的R脚本。 但是我从来没有编写过命令行代码(或者用Java调用它)所以我需要代码示例。 我正在使用我的命令行思路包括我为下面的一种可能方法编写的工作示例代码。 在下面的内联注释中,您可以看到AssembleDataFile.java中的第三步被我故意留空。 如果您认为可以使命令行思想有效,那么请告诉我在第三步中编写的代码。 另外,请随意建议另一种方法,希望不涉及向我的代码添加任何更多依赖项。 并且,与往常一样,我非常感谢您可能发布到与此问题相关的文章/教程/等的任何链接。 这是我到目前为止: AssembleDataFile.java import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; public class AssembleDataFile { static String delimiter; static String localPath = “C:\\test\\cr\\”; static String[][] myDataArray; public static void main(String[] args) { String inputPath = localPath+”pd\\”; String fileName = “MSData.txt”; delimiter = “\\t”; // […]

如何使用Java将文件分成几部分?

我有一个奇怪的问题要问。 我需要知道如何使用Java(任何文件类型)将给定文件分成小块。 然后,我可以将这些和平放入CD,pendrives并带走。 我用这种方式试了一下 但正如大多数用户评论的那样,我正在尝试的是以这种方式无法实现的。 因此,我决定提出一个新问题,以获得正确的破解文件的方法。 当我将文件分成几块(猜30件)时,必须有一种方法可以重新组装它们并创建原始文件。 请帮忙。

确定HTTP响应的大小?

有没有办法确定HTTPServletResponse内容的大小? 我读了这个get-size-of-http-response-in-java问题,但遗憾的是我工作的地方我无法访问CommonsIO 🙁 响应内容由单个复杂对象组成,因此我考虑将其写入临时文件,然后检查该文件。 当应用程序在生产中运行时,这不是我想要做的诊断,但是如果可能的话,想要避免它。 PS我读了erickson的答案但它提到了输入流我想知道正在写出的对象的大小…如果writeObject()方法返回一个表示写入的字节而不是void的数字,那将是非常好的…

Java – 由块读取文件?

我知道如何按字节读取文件,但无法找到如何以字节块读取它的示例。 我有一个字节数组,我想读取512字节的文件,并通过套接字发送它们。 我试过通过读取文件的总字节数,然后减去512字节,直到我得到一个小于512字节的块并发信号通知EOF和传输结束。 我正在尝试实现TFTP,其中数据以512字节的块发送。 无论如何会感谢一个例子。

读取多字节字符时InputStream和InputStreamReader之间的区别

InputStream和InputStreamReader之间的区别在于InputStream读取为byte ,而InputStreamReader读取为char 。 例如,如果文件中的文本是abc ,那么它们都可以正常工作。 但是如果文本是a你们由a和两个中文字符组成的a你们 ,则InputStream不起作用。 所以我们应该使用InputStreamReader ,但我的问题是: InputStreamReader如何识别字符? a是一个字节,但中文字符是两个字节。 它是否读取一个字节并将另一个字符识别为两个字节,或者对于本文中的每个字符, InputStreamReader是否将其读取为两个字节?

Java Scanner不等待用户输入

我正在使用Java的扫描仪来读取用户输入。 如果我只使用一次nextLine,它可以正常工作。 有两个nextLine,第一个不等待用户输入字符串(第二个)。 输出: X:Y :(等待输入) 我的代码 System.out.print(“X: “); x = scanner.nextLine(); System.out.print(“Y: “); y = scanner.nextLine(); 任何想法为什么会这样? 谢谢

从文本文件中读取巨大的字符串

我有一个大文本文件,但没有任何换行符。 它只包含一个长字符串(1个庞大的字符串,包含所有ASCII字符),但到目前为止,任何工作都可以正常,因为我可以用Java读取整行到内存中,但我想知道是否有内存泄漏问题,因为文件变得像5GB +那么大,并且程序无法立即将整个文件读入内存,所以在这种情况下读取此类文件的最佳方法是什么? 我们可以把这条巨大的线分成2个部分甚至是多个块吗? 这是我如何阅读文件 BufferedReader buf = new BufferedReader(new FileReader(“input.txt”)); String line; while((line = buf.readLine()) != null){ }