Tag: io

如何使用Java JSch库逐行读取远程文件?

我正在尝试使用Java逐行读取文件,这非常简单(在stackoverflow.com上有多个解决方案),但需要注意的是该文件位于远程服务器上,而不是可以获得本地副本(它是单个.txt文件中数百万亚马逊评论的大量集合)。 JSch附带了两个示例类,用于将文件复制到远程主机或从远程主机复制文件,即ScpTo和ScpFrom。 我有兴趣逐行从远程主机读取文件; ScpFrom会尝试将整个内容复制到本地文件中,这需要很长时间。 以下是ScpFrom的链接: http : //www.jcraft.com/jsch/examples/ScpFrom.java.html 我会尝试将代码存放在那里,然后修改它以逐行读取远程文件而不是写入本地文件,但是一旦作者声明了一个字节数组并开始从中读取字节,大部分代码都是希腊语。远程文件。 我承认这是我几乎不了解的事情; BufferedReader提供了更高级别的接口。 基本上我想这样做: 如何使用Java逐行读取大型文本文件? 除了使用BufferReader,它还可以逐行读取远程文件,如果提供了主机名和用户凭据(密码等),即RemoteBufferReader? 这是我写的测试代码; 如何使用JSCh逐行读取远程文件? public class test2 { static String user = “myusername”; static String host = “user@remotehost”; static String password = “mypasswd”; static String rfile = “/path/to/remote/file/on/remote/host”; public static void main(String[] args) throws FileNotFoundException, IOException, JSchException { JSch jsch=new JSch(); Session session=jsch.getSession(user, […]

流式写Json

我在ArrayList有JsonObject 。 我需要将这些JsonObject添加到JsonArray并将其写入文件中。 我正在使用Gson ,下面是我的代码。 private void myWriter(List jsonObjectHolder, int number) throws IOException { System.out.println(“Starting to write the JSON File”); //Add everything into a JSONArray JsonArray jsonArrayNew = new JsonArray(); for(int i=0;i<jsonObjectHolder.size();i++) { //System.out.println("inside array: "+i); JsonObject o = jsonObjectHolder.get(i); System.out.println("inside array "+i+": "+o.get("title")); jsonArrayNew.add(jsonObjectHolder.get(i)); } System.out.println("Size: "+jsonArrayNew.size()); //Write it to the File File file= […]

java.io.IOException:网络文件夹上的权限被拒绝

当我试图在一个安装在unix系统上的窗口文件夹上写一个文件时,我有post的标题错误。 我开发了一个在Linux操作系统上运行Tomcat 6的Web服务,需要在Windows网络文件夹上编写。 系统管理员已将其安装在Linux服务器上,并且在其上创建和修改文件没有问题。 当我尝试执行发布的代码时,我得到以下exception: 权限被拒绝java.io.IOException:在java.io.File.createFileExclusively(Native Method)java.io.File.createNewFile(File.java:850)上的权限被拒绝 奇怪的是,它似乎与网络文件夹上的File.createNewFile方法有关,实际上该服务可以在本地文件系统上编写而没有问题,无论是在调试(用于开发服务的pc)还是tomcat文件夹系统管理员在linux服务器上提供了我。 文件已创建但为空,并且不会打印create方法后面的日志条目。 此外,如果我使用普通的输出流来创建和写入文件我没有问题。 我在网上找不到关于例外的任何解释。 由于我对java不是很有经验,我想知道为什么我会收到这个错误。 我是以错误的方式使用它吗? 这是图书馆的错误吗? 我想错过传递一些参数吗? 如上所述,我使用普通的输出流解决了这个问题,这是一个提高我对java的理解的问题。 FileOutputStream fos = null; try{ log.info(String.format(“file length: %s”,streamAttach.length)); log.info(String.format(“check File : %s”,filename)); File f = new File(filename); if(f.exists()) … boolean done= f.createNewFile();//here comes the exception //nothing of the following happens if(!done) throw new NWSException(“error creating file”); log.info(String.format(“file %s creato”, […]

在Java中重定向子进程的I / O(为什么ProcessBuilder.inheritIO()不工作?)

我正在以下列方式启动一个过程。 try { final Process mvnProcess = new ProcessBuilder(“cmd”, “/c”, “mvn”, “–version”) .directory(new File(System.getProperty(“user.dir”))) .inheritIO() .start(); System.exit(mvnProcess.waitFor()); } catch (final IOException ex) { System.err.format(IO_EXCEPTION); System.exit(1); } catch (final InterruptedException ex) { System.err.format(INTERRUPTED_EXCEPTION); System.exit(1); } 由于我调用inheritIO()我期待控制台上的子进程输出,但没有出现。 我在这里想念的是什么? 编辑:我知道我可以使用mvnProcess.getInputStream()并显式读取进程的输出,将其写入循环中的控制台(或其中)。 我不喜欢这个解决方案,因为循环会阻塞我的线程。 inheritIO()看起来很有前途,但显然我不明白它是如何工作的。 我希望这里有人可以对此有所了解。

抽象路径在java.io中意味着什么?

在java doc中 File#getPath() 写道: Converts this abstract pathname into a pathname string. 我试着写1 File file3 = new File(“D:\\work”); System.out.println(file3.getPath()); 在cmd中我看到D:\\work 我试着写2: File file4= new File(“file4”); System.out.println(file4.getPath()); 在cmd我看到: file4 因此我有一个问题: 有什么区别 抽象路径名 和 路径名字符串 ?

如何将字节数组存储为磁盘上的映像文件?

我有一个Image的字节数组表示。 如何将其作为映像文件保存在磁盘上。 我已经这样做了 OutputStream out = new FileOutputStream(“a.jpg”); out.write(byteArray); out.flush(); out.close(); 但是当我通过双击打开图像时,它不会显示任何图像。

Java:BufferedReader的readLine方法的效率和可能的替代方案

我们正在努力减少延迟并提高用Java编写的进程的性能,该进程通过BufferedReader类的readLine()方法从套接字使用数据(xml字符串)。 数据由行结束分隔符(\ n)分隔,每行可以是可变长度(6KBits – 32KBits)。 我们的代码如下: Socket sock = connection; InputStream in = sock.getInputStream(); BufferedReader inputReader = new BufferedReader(new InputStreamReader(in)); … do { String input = inputReader.readLine(); // Executor call to parse the input thread in a seperate thread }while(true) 所以我有几个问题: inputReader.readLine()方法一旦命中\ n字符就会返回,还是等到缓冲区满了? 从使用BufferedReader获取套接字数据的速度是否更快? 当输入字符串的大小小于Socket接收缓冲区的大小时会发生什么? 当输入字符串的大小大于Socket接收缓冲区的大小时会发生什么? 我正在使用Java的IO库(慢慢地)掌握,所以任何指针都非常受欢迎。 谢谢!

从java中的项目文件夹加载图像

我想加载一个位于我的projet文件夹中的图像: /src/images/URL.jpg 我试过这段代码: BufferedImage image = ImageIO.read(getClass().getResource(“/images/URL.jpg”)); 但是我收到了这个错误: Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(ImageIO.java:1388) at Personel.PersonnelMainForm.print(PersonnelMainForm.java:464) 我怎么解决这个问题 ?

如何在Java中压缩文件和文件夹?

请看下面的代码。 public void startCompress(String path,String fileName,String outputLocation,int compressType,int filSize) throws Exception { System.out.println(“Input Location: “+path); System.out.println(“Output Location: “+outputLocation); System.out.println(compressType); byte[] bs=new byte[filSize]; System.out.println(filSize); FileOutputStream fos=new FileOutputStream(outputLocation+”/test.zip”); System.out.println(fos.toString()); ZipOutputStream zos=new ZipOutputStream(fos); ZipEntry ze = new ZipEntry(fileName); zos.putNextEntry(ze); FileInputStream inputStream=new FileInputStream(path); int len; while((len=inputStream.read(bs))>0){ zos.write(bs, 0, len); } inputStream.close(); zos.closeEntry(); zos.close(); } 在上面的代码中,我们使用java.util.zip包压缩文件。 但我们有一个问题。 也就是说,如果我们选择多个文件,则只压缩一个文件。 如果我们选择一个文件夹,压缩就不起作用了。 如何修复此问题以压缩文件,文件,文件夹,文件夹甚至嵌套文件夹? […]

保持Java套接字打开?

我正在制作一个会自动更新的程序/游戏。 我有更新部分,但没有检查版本。 我本以为这很容易。 inheritance人我做了什么。 我为游戏写了一个更新程序,我写了一个服务器。 每次客户端/更新程序连接时,服务器都会启动一个线程。 线程处理一切。 游戏更新程序读取名为version.txt的文件,并提供版本号(默认为0.0.1)并将其发送到服务器。 服务器确实接收了版本,并将System.out.println(); 如果版本匹配,如果我更改版本,它会更改输出。 这部分有效。 但就目前而言。 该过程的第二部分是服务器然后只发送一个名为NPS Game.txt的文本文件(它发送任何内容,但txt很容易测试),客户端用新的版本替换旧版本的文件发送。 问题是我一直收到一个错误,说Socket已关闭。 我尝试过使用socket.setKeepAlive(true); 但这并没有改变任何东西(我把它放在客户端和服务器上)。 这是代码: 服务器: package main; import java.io.*; import java.net.*; import javax.swing.JOptionPane; public class Server { static ServerSocket serverSocket = null; static Socket clientSocket = null; static boolean listening = true; public static void main(String[] args) throws IOException { try […]