最近看下载了些英文电影,想参照英文字幕来看,结果下载的英文字幕和rmvb格式电影,不能够同步,所以想解决这个问题
方法一:
编辑rmvb格式的电影,这个方法在baidu里边搜索"编辑rmvb格式",有很多解决方法,在此就不再赘述了!
方法二:
编辑英文字幕的时间来与电影相对应,在此我写了一个小程序来实现的,贴出来大家一起研究吧!
html代码:
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="EditTxt.aspx.cs" Inherits="EditTxt" ValidateRequest="false"
%>
<
html
>
<
head
runat
="server"
>
<
title
>
Edit Page
</
title
>
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<
script
language
="javascript"
>
function GetPath(obj,flg)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if(flg=="1")
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
document.getElementById("<%=this.FileNameTextBox.ClientID %>").value=obj.value;
}
else if(flg=="2")
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
document.getElementById("<%=this.writeTextBox.ClientID %>").value=obj.value;
}
}
</
script
>
</
head
>
<
body
>
<
form
id
="form1"
runat
="server"
>
<
table
>
<
tr
>
<
td
width
="150px"
>
Choose Txt file:
</
td
>
<
td
width
="400px"
>
<
asp:FileUpload
ID
="fileTxtPath"
runat
="server"
onblur
="GetPath(this,'1')"
/>
<
asp:TextBox
ID
="FileNameTextBox"
runat
="server"
Text
="C:\kiss-fg-cd1.eng1.txt"
></
asp:TextBox
></
td
>
</
tr
>
<
tr
>
<
td
>
Please Input Time:
</
td
>
<
td
>
h:
<
asp:TextBox
ID
="txtHTime"
runat
="server"
Width
="40px"
Text
="0"
></
asp:TextBox
>
m:
<
asp:TextBox
ID
="txtMTime"
runat
="server"
Width
="40px"
Text
="0"
></
asp:TextBox
>
s:
<
asp:TextBox
ID
="txtSTime"
runat
="server"
Width
="40px"
Text
="0"
></
asp:TextBox
></
td
>
</
tr
>
<
tr
>
<
td
>
Write In File:
</
td
>
<
td
>
<
asp:FileUpload
ID
="FileUpload1"
runat
="server"
onblur
="GetPath(this,'2')"
/>
<
asp:TextBox
ID
="writeTextBox"
runat
="server"
Text
="D:\newkiss.txt"
></
asp:TextBox
></
td
>
</
tr
>
<
tr
>
<
td
>
<
asp:Button
ID
="btnAddTime"
runat
="server"
Text
="Add Time"
OnClick
="btnAddTime_Click"
/>
</
td
>
<
td
>
<
asp:Label
ID
="MsgLabel"
ForeColor
="red"
runat
="server"
></
asp:Label
>
</
td
>
</
tr
>
</
table
>
<
table
>
<
tr
>
<
td
>
<
asp:TextBox
ID
="FileContentTextBox"
runat
="server"
TextMode
="MultiLine"
Width
="300"
Height
="500px"
></
asp:TextBox
></
td
>
<
td
>
<
asp:TextBox
ID
="newContent"
runat
="server"
TextMode
="MultiLine"
Width
="300"
Height
="500px"
></
asp:TextBox
></
td
>
</
tr
>
</
table
>
</
form
>
</
body
>
</
html
>
C#代码部分:
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.Text.RegularExpressions;
using
System.IO;
using
System.Text;
using
System.Security.Permissions;
using
System.Security.AccessControl;
using
System.Runtime.InteropServices;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
public
partial
class
EditTxt : System.Web.UI.Page
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
protected void Page_Load(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected void btnAddTime_Click(object sender, EventArgs e)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ReadControlFile();
}
// Adds an ACL entry on the specified file for the specified account.
public static void AddFileSecurity(string fileName, string account, FileSystemRights rights, AccessControlType controlType)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
// Get a FileSecurity object that represents the current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType));
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Removes an ACL entry on the specified file for the specified account.
public static void RemoveFileSecurity(string fileName, string account,FileSystemRights rights, AccessControlType controlType)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
// Get a FileSecurity object that represents the current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Add the FileSystemAccessRule to the security settings.
fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,rights, controlType));
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void ReadControlFile()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
int hError = txtHTime.Text.Length > 0 ? Convert.ToInt32(txtHTime.Text) : 0;
int mError = txtMTime.Text.Length > 0 ? Convert.ToInt32(txtMTime.Text) : 0;
int sError = txtSTime.Text.Length > 0 ? Convert.ToInt32(txtSTime.Text) : 0;
FileContentTextBox.Text = "";
newContent.Text = "";
StreamWriter sw;
try
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//fileTxtPath.PostedFile.FileName
if (!File.Exists(FileNameTextBox.Text))
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
MsgLabel.Text = "This file is no Exist!";
return;
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
FileIOPermission fileIOPerm1;
fileIOPerm1 = new FileIOPermission(FileIOPermissionAccess.AllAccess, writeTextBox.Text);
fileIOPerm1.AllFiles = FileIOPermissionAccess.Write;
fileIOPerm1.AllLocalFiles = FileIOPermissionAccess.Write;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FileInfo aa = new FileInfo(writeTextBox.Text);
//FileSecurity security = aa.GetAccessControl();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Add the access control entry to the file.
//AddFileSecurity(writeTextBox.Text, "bitoc.net/shen_hengjun@bitoc.net", FileSystemRights.Write, AccessControlType.Allow);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
StreamReader sr = File.OpenText(FileNameTextBox.Text);
sw = File.CreateText(writeTextBox.Text);
String[] lines = File.ReadAllLines(FileNameTextBox.Text);
string content = sr.ReadToEnd();
String regex = "\\d\\d:\\d\\d:\\d\\d,\\d\\d\\d --> \\d\\d:\\d\\d:\\d\\d,\\d\\d\\d";
int timeError = hError * 3600 + mError * 60 + sError;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
foreach (string line in lines)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
MatchCollection mm = Regex.Matches(line, regex);
StringBuilder newLine = new StringBuilder(500);
if (mm.Count > 0)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
int times;
int second = Convert.ToInt32(line.Substring(6, 2));
int minute = Convert.ToInt32(line.Substring(3, 2));
int hour = Convert.ToInt32(line.Substring(0, 2));
times = timeError + second + minute * 60 + hour * 3600;
String shour = "0" + (times / 3600);
String sminute = "0" + ((times % 3600) / 60);
String ssecond = "0" + (times % 60);
int second2 = Convert.ToInt32(line.Substring(23, 2));
int minute2 = Convert.ToInt32(line.Substring(20, 2));
int hour2 = Convert.ToInt32(line.Substring(17, 2));
times = timeError + second2 + minute2 * 60 + hour2 * 3600;
String shour2 = "0" + (times / 3600);
String sminute2 = "0" + ((times % 3600) / 60);
String ssecond2 = "0" + (times % 60);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
newLine.Append(shour.Substring(shour.Length - 2) + ":");
newLine.Append(sminute.Substring(sminute.Length - 2) + ":");
newLine.Append(ssecond.Substring(ssecond.Length - 2) + ",");
newLine.Append(line.Substring(9, 3) + " --> ");
newLine.Append(shour2.Substring(shour2.Length - 2) + ":");
newLine.Append(sminute2.Substring(sminute2.Length - 2) + ":");
newLine.Append(ssecond2.Substring(ssecond2.Length - 2) + ",");
newLine.Append(line.Substring(26, 3));
sw.WriteLine(newLine.ToString());
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
sw.WriteLine(line);
}
}
sw.Close();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
FileContentTextBox.Text = content;
sr.Close();
MsgLabel.Text = "Sucess!!";
StreamReader newsr = File.OpenText(writeTextBox.Text);
newContent.Text = newsr.ReadToEnd();
newsr.Close();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// Remove the access control entry from the file.
//RemoveFileSecurity(writeTextBox.Text, @"DomainName\AccountName", FileSystemRights.ReadData, AccessControlType.Allow);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
catch (Exception ce)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
MsgLabel.Text = "Fail for :" + ce.ToString();
//sr.Close();
}
finally
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
}
}
}
页面的效果是这个样子的:
其中
AddFileSecurity和
RemoveFileSecurity这两个方法是从微软msdn上抄的,是对要写的那个txt进行属性修改,但是我没调试成功!
在这儿推荐一个电影字幕下载的好网站:
http://www.shooter.cn/ 射手网
感谢
http://hi.baidu.com/xiaoyaogg/blog/item/9c2053af202d1bfafbed5021.html