如何在linux中设置路径?

时间:2014-01-02 10:31:25

标签: java linux struts2

我使用Struts2,java和mysql开发了一个Web应用程序。当我在Linux VM服务器上托管此应用程序时,它无法正常工作。我认为这是由于一些路径问题。

这是我的Java类:

import com.altoopa.utils.DBConnection;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.Date;
public class VideoBuffer {
    FileInputStream fis = null;
    FileOutputStream out = null;

            public String readVideo() throws IOException, SQLException {    
                    try {

             int i =0;
             String s=null;
               Date currentDate3 = Calendar.getInstance().getTime();
            System.out.println(currentDate3);
            int _day3 = currentDate3.getDay(); //Getting day
            System.out.println(_day3);
            String current_day3 = null;
            if (_day3 == 0) {
                current_day3 = "Redday";
            } else if (_day3 == 1) {
                current_day3 = "Violetday";
            } else if (_day3 == 2) {
                current_day3 = "Indigoday";
            } else if (_day3 == 3) {
                current_day3 = "Blueday";
            } else if (_day3 == 4) {
                current_day3 = "Greenday";
            } else if (_day3 == 5) {
                current_day3 = "Yellowday";
            } else if (_day3 == 6) {
                current_day3 = "Orangeday";
            }
            System.out.println(current_day3);
            Calendar cal3 = Calendar.getInstance();
            int week3 = cal3.get(Calendar.WEEK_OF_YEAR); //Getting week
            System.out.println(week3);

              DBConnection db=new DBConnection();
              Connection con=db.getDBConnection();
            String  query="SELECT calender_id FROM calender_altoopa WHERE week='" + week3 + "' and altoopa_day='" + current_day3 + "'";
          PreparedStatement ps=con.prepareStatement(query);
           ResultSet rs_scrc=ps.executeQuery();

            while (rs_scrc.next()) {

                 i = rs_scrc.getInt(1);
               System.out.println("calender iddfdsfdsfdsfsff"+i);

            }
            String query1="select video_name from sgbg_video where calender_id= ?";
             PreparedStatement ps1=con.prepareStatement(query1);
             ps1.setInt(1,i);
           ResultSet rs_scrc1=ps1.executeQuery();

            while (rs_scrc1.next()) {
                System.out.println(rs_scrc1.getString(1));
                 s=rs_scrc1.getString(1);
                 System.out.println("videoooooooooooo"+s);`enter code here`

            }
            fis = new FileInputStream(new File("D:\\Dk\\"+"\\"+s));

            String userImageFileName = "temp.mp4";
            out = new FileOutputStream(new File(
                    "D:\\sreejith_\\altoopa_6\\web\\VideoFile" + "\\"
                            +s));
            int c;
                        byte[] buffer=new byte[1024];
            while ((c = fis.read(buffer)) != -1) {
                System.out.println("Writing to file...");
                out.write(buffer,0,c);
            }
            out.flush();

            return s;
        }
                catch (Exception e) {
            e.printStackTrace();
        } finally {
            fis.close();
            out.close();
        }
        return null;
    }
}

使用此类,我将视频文件从D:Dk文件夹中流式传输,并将其写入NeatBeans应用程序目录中的VideoFile文件夹中。

我的问题是:我应该用什么路径代替“D:\ Dk \”+“\”+ s将应用程序部署到linux VM?我从这个目录中获取视频并输入
        “D:\ sreejith_ \ altoopa_6 \ web \ VideoFile”+“+ s));

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>
            org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
        </filter-class>
    </filter>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>``
    </filter-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
      <context-param>       
        <param-name>FileUploadPath</param-name>
        <param-value>D:\Dk</param-value>        
    </context-param>
     <context-param>        
        <param-name>AudioUploadPath</param-name>
        <param-value>D:\AltoopaAudio</param-value>      
    </context-param>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

请帮助我如何将此应用程序部署到Linux上。

2 个答案:

答案 0 :(得分:1)

您应该更改web.xml中的配置,但它不适合多操作系统构建(当使用maven时,您需要配置激活并拥有许多web.xml或在构建时转换它们。)

更好的方式,IMO,是配置系统变量并使用它们:

System.getenv("UP_FILE_PATH");
System.getenv("UP_VIDEO_PATH");

但最好的是在DB中创建配置表并将其放在那里。您的配置类可能包含获取操作系统类型的方法,并从DB中读取适当的变量。

答案 1 :(得分:0)

查看代码中的那些硬编码文件路径(“D:\ ...”)。最好把它带到.properties文件或数据库表,因为它们肯定不存在于你的Linux框中

编辑:

抱歉,我可能还没有理解你的问题。您应该与您的运营商联系,在Linux框中为您的视频准备磁盘位置(可能/视频,请记住Linux和Unix OS没有单位字母)。

但是这条路不是你的问题,你应该花一点时间思考你的需求。例如,您的应用程序是否已投入生产?在这种情况下,您认为您需要多少空间?您的运营商肯定会告诉您他们需要准确的估算,因为VM箱的生产舱空间非常昂贵。在这种情况下也要考虑如果您的需求增长,您将如何确保可扩展性(也许您需要准备某种NAS?)