Tag: file io

如何使用outputstream在java中添加附件到电子邮件

我已经看到了javax.mail库的代码,你可以在其中添加附件到电子邮件: MimeBodyPart attachmentPart = new MimeBodyPart(); FileDataSource fds = new FileDataSource(“C:/text.txt”); attachmentPart.setDataHandler(new DataHandler(fds)); attachmentPart.setFileName(“text.txt”); multipart.addBodyPart(attachmentPart); 但这需要该文件驻留在此磁盘上的某个位置。 我想直接从电子邮件库中获取一个输出流,并直接从我写入该输出流的另一个地方将文件内容流入其中。 这可能吗?

如何检测java中的文件系统已经改变

我想知道如何在java中有效地实现文件系统更改? 假设我在文件夹中有一个文件并修改该文件。 我希望尽快通过java通知这个变化(如果可能的话,不经常轮询)。 因为我认为我可以每隔几秒调用java.io.file.lastModified但我根本不喜欢该解决方案的声音。 alfred@alfred-laptop:~/testje$ java -version java version “1.6.0_18” Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Server VM (build 16.0-b13, mixed mode)

在java中读取大型CSV

我想从CSV中读取大量数据,包含大约500,000行。 我正在使用OpenCSV库。 我的代码是这样的 CsvToBean csvConvertor = new CsvToBean(); List list = null; try { list =csvConvertor.parse(strategy, new BufferedReader(new FileReader(filepath))); } catch (FileNotFoundException e) { e.printStackTrace(); } 最多200,000条记录,数据被读入User bean对象列表。 但对于数据而言,我得到的不止于此 java.lang.OutOfMemoryError: Java heap space 我在“eclipse.ini”文件中有这个内存设置 -Xms256m -Xmx1024m 我正在考虑将大文件拆分为单独文件并再次读取这些文件的解决方案,我认为这是一个很长的解决方案。 有没有其他方法,我可以通过它避免OutOfMemoryErrorexception。

从json文件中读取多个元素

我有一个包含许多元素的json文件: { “code” : “hfuiew89”, “type” : “location”, “coordinates” : [ { “lat” : 40.9861, “lon” : 29.1046, “index” : 1 }, { “lat” : 40.9976, “lon” : 29.1153, “index” : 2 }, { “lat” : 40.9809, “lon” : 29.2194, “index” : 3 }] } { “code” : “klsdsjh”, “type” : “location”, “relatedTags” : [ […]

java file.renameTo()重命名文件但返回false。 为什么?

问题是我需要在我的逻辑的其余部分工作之前移动文件,所以当方法返回false时我停止执行。 但是,当我在Windows资源管理器中检查文件时,它有一个新名称,并且它已移动。 只是好奇为什么会这样。 这里是一些示例代码,我只是试图重新创建该问题。 它几乎是一样的,它工作正常。 File testfile = new File(“TestFile”); if(!testfile.exists()){ testfile.mkdirs(); } File sample = new File(“sample.txt”); if(sample.exists()){ boolean success = sample.renameTo(new File(testfile.getPath() + “\\” + sample.getName())); if(success){ System.out.println(“Moved”); } else{ System.out.println(“Failed”); } } 编辑:解决了它。 我很遗憾浪费每个人的时间来愚蠢的事情。 但是,我真的不认为如果不发表这篇文章,我会追踪到这一点。 解决方案是我实际上循环遍历几个文件来移动。 当输出说失败然后程序停止了,当我查看资源管理器时,只有第一个文件被实际移动,所以我认为它正在移动然后返回false。 然而,问题在于我使用了错误的变量作为索引,所以发生的事情是它确实成功地在索引0中移动了文件,然后当循环重复时索引没有增加,所以它试图再次移动索引0因此失败了。 就像我说的那样,非常愚蠢,但感谢与我的关系。

修改执行Jar文件

Hello Stack Overflow朋友。 我有一个简单的问题,我担心没有一个简单的解决方案,我需要建议如何继续。 我正在开发一个打包为可执行JAR的Java应用程序,但它需要在执行期间修改其一些JAR文件内容。 在这个阶段,我遇到了一个问题,因为某些操作系统会锁定文件以防止写入文件。 在应用程序退出时,用户必须看到jar文件的更新版本,尽管我可以非常灵活地了解如何实现这一点。 清洁高效的解决方案显然是可取的,但便携性是唯一的硬性要求。 以下是我可以看到解决问题的三种方法,随意评论或建议其他方法。 告诉Java解锁JAR文件进行编写(这似乎不太可能,但它将是最简单的解决方案) 在应用程序启动时将可执行类文件复制到临时文件,使用类加载器加载这些文件并从初始JAR文件中卸载这些文件。(对类加载器没有太多经验,但希望JVM能够足够聪明地实现原来的JAR不再使用,所以解锁它) 将第二个可执行JAR文件放入First中,在启动时将内部jar提取到e临时文件,使用复制的内部JAR调用新的java进程并将其传递给外部JAR的位置,第一个进程退出,第二个进程修改外部jar uninumbered。(这将工作,但我不确定有一个平台独立的方式,一个Java应用程序调用另一个) 我知道这是一个奇怪的问题,但任何帮助将不胜感激。

读取由制表符分隔的文件,并将单词放在ArrayList中

我正在做一个自学练习,以帮助我更多地了解Java,但我坚持这个问题。 我有以下txt文件: Name Hobby Susy eat fish Anna gardening Billy bowling with friends 注意: 名称和爱好由制表符分隔 读取所有行并将其放入arraylist(名称,爱好)的最佳方法是什么。 棘手的部分是 eat fish or bowling with friends 有空格,它必须放在一个arrays下,显然我不能硬编码。 这是我目前的代码: public void openFile(){ try{ FileInputStream fstream = new FileInputStream(“textfile.txt”); // use DataInputStream to read binary NOT text BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); ArrayList names = new ArrayList(); ArrayList hobbies […]

在具有多行的文本文件上使用StringTokenizer时出错

我正在尝试读取文本文件并使用java中的字符串标记生成器实用程序单独拆分单词。 文本文件看起来像这样; a 2000 4 b 3000 c 4000 d 5000 现在,我要做的是从文本文件中获取每个单独的字符并将其存储到数组列表中。 然后我尝试打印arraylist中的每个元素。 这是我的代码; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.StringTokenizer; public static void main(String[] args) { String fileSpecified = args[0]; fileSpecified = fileSpecified.concat(“.txt”); String line; System.out.println (“file Specified = ” + fileSpecified); ArrayList words = new ArrayList (); try { FileReader […]

写入文件时插入换行符?

所以我的代码看起来像这样: try { while ((line = br.readLine()) != null) { Matcher m = urlPattern.matcher (line); while (m.find()) { System.out.println(m.group(1)); //the println puts linebreak after each find String filename= “page.txt”; FileWriter fw = new FileWriter(filename,true); fw.write(m.group(1)); fw.close(); //the fw writes everything after each find with no line break } } 我在System.out.println(m.group(1));行System.out.println(m.group(1));得到正确的输出formsSystem.out.println(m.group(1)); 但是当我稍后想写m.group(1)所显示的m.group(1)它写入文件而不放置换行符,因为代码没有。

从特定CSV文件读取数据并将其显示在JTable中

关于此问题: 从CSV文件中读取数据并将其显示在JTable中 我试图调整这个问题的程序,以使其符合我的需要,但它犯了错误。 我希望程序显示位于项目根目录中的文件(因此我必须编写File DataFile = new File(“res.csv”); )这就是全部。 问题是它只显示2行,当应该显示4行时。 这是代码: import java.util.*; import java.awt.event.*; import javax.swing.*; import java.awt.BorderLayout; import java.awt.*; import javax.swing.border.EmptyBorder; import java.io.*; import javax.swing.table.*; public class T1Data extends JPanel { private final JTable table; public T1Data() { super(new BorderLayout(3, 3)); this.table = new JTable(new MyModel()); this.table.setPreferredScrollableViewportSize(new Dimension(700, 70)); this.table.setFillsViewportHeight(true); JPanel ButtonOpen = […]