Tag: io

java中的简单流读/写问题

我正在尝试通过URLConnection上传文件,但我需要将其读/写为二进制文件而不进行任何编码更改。 所以我试图从FileInputStream读取byte[]数组,但现在我有一个问题。 我用于输出到服务器的PrintWriter对象不允许我执行writer.write(content) (其中content的类型为byte[] )。 我怎样才能解决这个问题? 或者是否有另一种方法可以快速将二进制数据从FileInputStream复制到PrintWriter ? 谢谢

为什么Java I / O中的字节可以表示字符?

为什么Java I / O中的字节可以表示字符? 我看到这些字符只是ASCII。 然后它不是动态的,对吧? 这有什么解释吗? 字节流和字符流有什么区别?

如何使用一个Java程序来监视另一个Java程序的输出?

下面的图表显示了我正在尝试做的事情:它只是2个程序。 一个是简单的Child ,它每2秒逐行写出整数。 另一个是监视日志文件的Parent程序(只是一个非常基本的文本文件)。 如果日志文件在5秒内没有被修改,那么它应该重启Child (通过批处理文件); 然后继续正常。 我的子类代码在这里: package fileiotestapplication; import java.io.*; import java.io.IOException; import java.util.*; public class WriterClass { @SuppressWarnings(“oracle.jdeveloper.java.insufficient-catch-block”) public WriterClass() { super(); int[] content = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,}; String[] friends = {“bob”,}; File file = new File(“/C:/Java_Scratch/someFile.txt”); // if file […]

使用System.out和PrintWriter写入控制台

在阅读Java I / O时,我意识到有两种方法可以写入标准输出。 以下是使用这两种技术的代码段 import java.io.*; public class ConsoleIO { public static void main(String[] args) { System.out.println(“Method 1”); PrintWriter writer = new PrintWriter(System.out); writer.println(“Method 2”); writer.flush(); writer.close(); } } 使用一个优于另一个是否有任何性能优势?

检查文件是否完整写入

目前我正在开发一个项目,它在其中一个例程中处理源目录中的文件。 有一个Java进程正在查找指定的目录,并尝试读取和处理文件(如果存在)。 文件退出大并由其他第三方进程更新。 问题是如何检查文件是否完整写入? 我正在尝试使用file.length()但看起来即使写入过程尚未完成它也会返回实际大小。 我觉得解决方案应该依赖于平台。 任何帮助,将不胜感激。 更新:这个问题与副本没有什么不同,但它有一个高评级的工作代码片段的答案。

限制Java中的文件访问

问题: 在我的Java应用程序(不是applet)中,我希望将某些文件操作限制为除了不应限制的类的列表/组/包之外的所有类。 具体来说,我想限制…… 文件读取 文件写入 文件创建 文件删除 …这样它们只能在当前工作目录中为除了不受限制的类之外的所有类完成。 SecurityManager尝试: 我试图实现SecurityManager类的子类来实现这种行为,但是当检查时,提供的文件信息似乎不仅仅提供文件名(除非我遗漏了什么?)。 另外,我不太明白在这种情况下我怎么能找到调用的类,允许我确定是允许操作还是抛出exception。 有什么办法可以获得这种方法所需的所有信息吗? 基于政策的尝试: 我也知道Java策略旨在限制类的操作,包括文件操作等。 但是,我真的很难找到一个很好的资源来学习如何使用.policy文件来解决我的问题。 问题总结: 1)是否有任何替代方法可能比我提到的方法更好? 2)使用SecurityManager可以实现吗? 我错过了我应该如何实际采用这种方法吗? 3)这可以使用策略文件吗? 我在这方面错过了什么好资源吗? 我真的不喜欢为实现这一点而需要投入的任何努力工作 – 我只是不确定我应该如何正确地处理它。 我也非常缺乏足够的资源来教我足够的关于我提到的两种可能的方法,允许我自己实现它。 最重要的是,我并不害怕需要的重要阅读! 感谢您提前给予的任何帮助。

引起:java.io.FileNotFoundException:无法打开ServletContext资源

我试图通过使用spring hibernatetemplate将我的hibernate示例移植到spring但是我得到了这个错误引起的:java.io.FileNotFoundException:无法打开ServletContext资源[/applicationContext.xml]。 请建议我运行我的项目。 我的公司比较新鲜 我的web.xml文件 index.jsp spring org.springframework.web.servlet.DispatcherServlet 1 org.springframework.web.context.ContextLoaderListener contextConfigLocation applicationContext.xml 我的applicationContext.xml org.hibernate.dialect.MySQLDialect 我的HrDAO.java文件 – > package login; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.HibernateTemplate; public class HrDao { HibernateTemplate template; public void setSessionFactory(SessionFactory factory) { template = new HibernateTemplate(factory); } public void saveStudent(HrModel e) { template.save(e); } } 我的HrMain.java文件 – > package login; import org.springframework.beans.factory.BeanFactory; import […]

2011年的Java:线程套接字VS NIO:在64位操作系统和最新的Java版本上可以选择什么?

我在StackOverflow和一些博客上阅读了几篇关于java.net vs java.nio的post。 但我仍然无法理解何时应该更喜欢NIO而不是螺纹sockets。 你能否在下面检查我的结论并告诉我哪些不正确以及哪些错过了? 因为在线程模型中,您需要为每个活动连接专用一个线程,并且每个线程为其堆栈提供大约250千字节的内存,使用每插槽线程模型,您将在大量并发连接上快速耗尽内存。 与NIO不同。 在现代操作系统和处理器中,可以认为大量活动线程和上下文切换时间对于性能几乎无关紧要 NIO的整个吞吐量可能更低,因为异步NIO库在高负载环境中使用的select()和poll()比唤醒和放入hibernate线程更昂贵。 NIO一直比较慢,但它允许您处理更多的并发连接。 它本质上是一个时间/空间权衡:传统IO速度更快但内存占用更大,NIO速度更慢但使用的资源更少。 Java每个并发线程的硬件限制为15000/30000,具体取决于JVM,这会将每个连接模型的线程限制为此并发连接数最大,但JVM7将没有此限制(无法确认此数据)。 所以,作为结论,你可以这样: 如果你有数万个并发连接 – 除非请求处理速度是你的关键因素,否则NIO是更好的选择 如果你的数量少于 – 每个连接的线程是一个更好的选择(假设你可以负担大量的RAM来保持所有并发线程的堆栈达到最大值) 使用Java 7,您可能希望在任何一种情况下都使用NIO 2.0。 我对么?

扫描仪没有发现线路exception

我收到以下exception。 java.util.NoSuchElementException:找不到行 我在编写需要从文本文件中读取的较大程序时遇到此错误,因此决定进行测试。 Scanner scan = new Scanner(new File(“restrictions.txt”); String s1 = scan.nextLine(); System.out.println(s1); 我仍然得到例外。 我在一个名为restrictions.txt的类的文件夹中有一个文本文件,其中包含文本。 我究竟做错了什么?

控制台输入和输出的JUnit测试

我只有一个方法主要。 如何检查System.out.println()并使用JUnit替换Scanner自动输入值? PS请提供一些解决方案…… public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] arr = new int[4]; for (int i = 0; i < arr.length; i++) { arr[i] = scanner.nextInt(); } for (int i = 0; i < arr.length; i++) { int res = 0; int k = 0; int num = arr[i]; […]