-1

우분투 14.04를 사용 중이고 FileInputStream, FileOutputStream, BufferedReaderBufferWriter 과 같은 문제가 발생했습니다. 내 프로젝트는 다음과 같습니다. 내가 다른 파일을 하나 개의 파일에서 데이터를 복사 할 때 문제 코드가있다 :우분투 14.04를 사용하면 fileinputstream, fileoutputstream에 큰 문제가 있습니까?

TXT 파일 파일 "/home/mizzz/netbeansprojects/fold2/fg2.txt"를 열 때 문제가 발생했습니다
try{ 
    File filename=new File(jttex1.getText()); 
    File nfile=new File(jttex2.getText()); 
    if(!filename.exists()){ 
     p("file is not found"); 
     return; 
    } 
    if(!nfile.exists()){ 
     p("file is not found"); 
     return; 
    } 

    FileInputStream vinput=new FileInputStream(filename); 
    FileOutputStream voutput=new FileOutputStream(nfile); 
    jsizee.setText("size"+vinput.available()); 
    byte[] buffer=new byte [50]; 
    int lenghtt=0; 

    while ((vinput.read(buffer)) > 0);{ 
     voutput.write(buffer); 
     vinput.close(); 
     voutput.close(); 
    } 
}catch(IOException ee){ 
    System.err.println(ee.getMessage()); 

} 
} 

당신이 손상이 파일은 또 다른 문자 인코딩을 선택하고 시도 할 수 있습니다이 문서를 계속할 경우 열린 파일은 일부 잘못된 문자가 다시

/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/01,235

16,
+0

파일이 Null로 가득합니다. 또한 *에서 *를 (를) 읽고있는 곳을 지정하지 않아도됩니다. – Makoto

+2

이 코드는 너무 이상합니다. 나는 할 수 없습니다. – Kayaman

+0

내 코드 또는 우분투에서이 문제가 있는지 물어 본가요? – mizomizo

답변

3

루프는 완전히 잘못된 것입니다. IO 튜토리얼을 읽어야합니다.

while ((vinput.read(buffer)) > 0);{ 
     voutput.write(buffer); 
     vinput.close(); 
     voutput.close();} 

아니, 우분투 (또는 다른 플랫폼)에서 Java 파일 I/O와 해결되지 않은 문제가 없는지

int bytes = 0; 
while((bytes = vinput.read(buffer)) != -1) { 
    voutput.write(buffer, 0, bytes); 
} 
vinput.close(); 
voutput.close(); 
+0

감사가 수행하고 그 자습서를 읽어가는 지금 – mizomizo

+0

실행 kayman. 이것은 매우 기본적이고 잘 알려진 패턴입니다. 프로그래밍을 계속하려면 배워야합니다. – Kayaman

+0

+1하지만 여기에서 '바이트'를 초기화 할 필요는 없습니다. – EJP

0

이어야한다.

문제는 코드에있다.

당신이 사용자 공간 (Java 코드의 바이트 배열)에 모든 데이터를 읽어 주장하는 경우
Path src = Paths.get(jttex1.getText()); 
Path dst = Paths.get(jttex2.getText()); 
jsizee.setText("size: " + Files.size(src)); 
Files.copy(src, dst); 

, 다음 열고 파일을 적절히 종료해야합니다 : 그냥 copy() 방법을 사용합니다. 그러면 다음과 같이 보입니다.

Path src = Paths.get(jttex1.getText()); 
Path dst = Paths.get(jttex2.getText()); 
try (InputStream is = Files.newInputStream(src)) { 
    byte[] buffer = new byte[8192]; 
    try (OutputStream os = Files.newOutputStream(dst)) { 
    while (true) { 
     int n = is.read(buffer); 
     if (n < 0) 
     break; 
     os.write(buffer, 0, n); 
    } 
    } 
} 
+0

감사합니다. erickson – mizomizo

관련 문제