好吧,感谢@Asaph提到下载出错了,我想通了。
基本上下载很好,这就是我编写文件的方式。
我在下载项目时,我正在下载源代码和二进制文件,但是我正在写两个文件,就好像它们是一样的。
因此,更改了代码以检查文件类型,然后在必要时使用适当的编写器。如果有人奇迹般地遇到了相同的问题或正在做类似的事情,则代码如下:
(请注意,这是5秒钟前写的,用于解决该问题,并且写得很差,我自己打算对其进行重构,但是我不能为您做所有事情)
public void download(String project, String version, String location){ for(S3ObjectSummary s: getObjectList()) { String[] data = s.getKey().split("/"); if(data[0].equals(project) && data[1].equals(version)) { S3Object object = s3.getObject(s3BucketName,s.getKey()); InputStream input = object.getObjectContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(input)); File file = new File(location +"/"+ data[0] + "/" + data[2] + "/" + data[3] + "/" + data[4]); if(!file.exists()) { try {file.getParentFile().mkdirs(); file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } try { if(data[4].endsWith(".java")) { Writer writer = new OutputStreamWriter(new FileOutputStream(file)); while (true) { String line = reader.readLine(); if (line == null) break; writer.write(line + "n"); } writer.close(); } else if(data[4].endsWith(".class")) { System.out.println("Writing Classes"); byte[] buffer = new byte[8 * 1024]; try { OutputStream output = new FileOutputStream(file.getAbsolutePath()); try { int bytesRead; while ((bytesRead = input.read(buffer)) != -1) { output.write(buffer, 0, bytesRead); } } finally { output.close(); } } finally { input.close(); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)