2010-07-16 8 views
0

웹 응용 프로그램에서 텍스트 파일을 만드는 데 사용하는 Java 클래스가 있습니다. 결과를 얻을 수 및 파일에 대한 고정 된 형식으로 작성하고 우리의 윈도우 서버 중 하나에 저장, 쿼리를 실행,웹 응용 프로그램 : 리눅스 웹 서버의 Windows 서버 공유에 txt 파일 저장

private void CreatePaymentFile(String QueryCriteria) { 
BigDecimal TotalPay; 
DecimalFormat df2 = new DecimalFormat("00000"); 
String RecordString = null; 
try{ 
String fileName = "\\\\fileandprint\\Apps\\Jury\\SHARE\\Payment_" + shortdateToday + SeqID + "24400.txt"; 
File f = new File(fileName); 
FileOutputStream fop = new FileOutputStream(f); 
SetPaymentFileName("Payment_" + shortdateToday + SeqID + "24400.txt"); 
FileWriter PaymentStream = new FileWriter(fileName,true); 
BufferedWriter out = new BufferedWriter(PaymentStream); 

// TODO Auto-generated method stub 
String RecordStringFormat = "%-220s%-3s%-4s%-3s%-5s%-5s%-5s%-5s%-30s%-287s%-10s%-150s%-1s%-30s%-1s%-80s%-10s%-6s%-6s%-10s%-20s%-5s%-12s%-43s%-2s%-10s%-70s%-3s%-1s%-1s%-10s%-4s%-6s%-10s%-10s%-5s%27s"; 
JurorPayDetails JurorpayDetails = new JurorPayDetails(); 
ArrayList<JurorPayDetails.JurorPayDetailsTable> JurorPayDetailsObjList = new ArrayList<JurorPayDetails.JurorPayDetailsTable>(); 
JurorpayDetails.setJurorPayDetailsSql("Select P.*, GroupAssignment, TermDateServed, LastName, FirstName, Street1, Street2, City, State, ZipCode, Mileage, PublicEmployee, PayTime, PayMiles from PayDetails P INNER JOIN Jurors J ON P.JurorID = J.JurorID INNER JOIN Address A ON J.JurorID = A.JurorID where AddressType = 'M' and J.TermDateServed IN (" + QueryCriteria +") ORDER BY GroupAssignment, LastName"); 
boolean indicator = JurorpayDetails.setListOfJurorPayDetails(); 

if (indicator == true) 
{ 
int size = JurorpayDetails.getListSize(); 
JurorPayDetailsObjList = JurorpayDetails.getJurorPayDetailsList(); 
for (int i=0; i<size; ++i){ 
JurorPayDetails.JurorPayDetailsTable eachPayable = JurorPayDetails.JurorPayDetailsTable)JurorPayDetailsObjList.get(i); 
TotalPay = eachPayable.HoursAmount.add(eachPayable.MilesAmount); 
RecordString = String.format(RecordStringFormat, ((eachPayable.Street1.trim() + " " + eachPayable.Street2.trim()).trim()), "1","B","1","WFB10","00000","21801","21801",eachPayable.City,"",longdateToday,"", "N", "21801_" + eachPayable.JurorID,"N",((eachPayable.FirstName.trim() + " " + eachPayable.LastName.trim()).trim()),"", "PYMTLD","0",longdateToday,"21801" + shortdateToday + SeqID,df2.format(i + 1),eachPayable.Zipcode,"","RE","0","","CHK","N", "Y",longdateToday,"PYMT",eachPayable.State, "","001","01200",Paymentdf.format(TotalPay)); 
out.append(RecordString); 
out.newLine(); 
} 
out.close(); 
} 
}catch (Exception e) { 
System.err.println("error: " + e.getMessage()); 
} 
} 

없는 큰 일이 : 나는 다음과 같은 코드를 사용하고 있습니다.

로컬에서 실행할 때 제대로 작동하지만 응용 프로그램을 Linux 웹 서버에 설치하고 설정을 Linux로 변경하면 파일이 올바른 네트워크 위치에 저장되지 않습니다.

나는 Windows 파일 표기법 및 리눅스 파일 표기법을 사용하여 시도했다 : 이 FILEANDPRINT이 앱 \ 심사 위원 \ 공유는 예 파일 위치가 및 // FILEANDPRINT/앱/심사 위원/SHARE/

및하지 \ \ \\을 존재한다, 내가 말했듯이, 개발 과정에서 로컬로 실행될 때, 리눅스 박스에있을 때만 파일을 올바르게 저장하지 않는다.

제안 사항?

답변

0

명시 적으로 네트워크 공유를 로컬 디렉터리에 탑재해야합니다. 이렇게하는 방법에 대한 설명은 http://linuxwiki.de/smbmount을 참조하십시오.

Gnome 및 KDE 파일 관리자에서 네트워크 공유에 직접 액세스하는 것은 일부 마법을 적용하기 때문에 가능합니다. 운영 체제 수준에서 이러한 pathes는 존재하지 않습니다.

그래도 문제가 해결되지 않으면 예외 출력을 첨부하십시오. 당신은 메시지에 추가하여 예외의 이름과 스택 추적이 포함됩니다

err.printStackTrace(); 

이에

System.err.println("error: " + e.getMessage()); 

을 변경할 수 있습니다. 이는 메시지가 null 일 수 있고 예외가 발생한 코드 줄을 쉽게 볼 수 있기 때문에 특히 유용합니다.

+0

Linux PC에서 Windows 네트워크 공유에 액세스해야하는 경우 이미 완료된 것입니다. 나는 TightVNC를 사용하여 리눅스 박스에 접근하고, 파일 시스템을 열고, 리눅스 네트워크 공유에서 Fileandprint를 볼 수있다. – Leslie

+0

"파일 시스템을 어떻게 열었습니까?" 나는 많은 수의 gname/kde 관련 프로그램들이 자바가 직접적으로 네트워크 공유에 접근 할 수 있기 때문에 묻는다. –

+0

나는 루트 사용자와 함께 리눅스 박스에 로그온한다. 바탕 화면에서 Root 's Home을 열면 File Browser가 표시됩니다. 거기에서 네트워크 서버를 클릭합니다 ... 거기에서 FileandPrint 서버를 볼 수 있고 네트워크에 연결할 수 있습니다. 필자는 Jitterbit Windows 서버를 사용하여 문서를 만들고 이동하는 작업을 발견했다고 생각합니다. – Leslie