public bool Identify(File_Info fileInfo, Stream stream) { using (var reader = new FileReader(stream, true)) { return(reader.CheckSignature(4, "darc")); } }
public bool Identify(File_Info fileInfo, Stream stream) { return(fileInfo.Extension == ".bti"); }
public bool Identify(File_Info fileInfo, System.IO.Stream stream) { return(Utils.GetExtension(fileInfo.FileName) == ".atb"); }
static void Main(string[] args) { //파일목록 로드 List <File_Info> file_list = new List <File_Info>(); DirectoryInfo info = new DirectoryInfo("./files"); //DirectoryInfo : 특정 폴더안에 있는 파일을 접근/ // 폴더 생성,이동할때 사용하는 클래스 //GetFiles : 접근한 폴더안에 있는 파일정보들을 추출하는 메소드 //var : 프로그램이 시작하기전 해당 변수에 대입된 자료형/클래스를 //보고 자동으로 자료형/클래스 맞게 변수를 선언해주는 문법 //foreach (FileInfo fileInfo in info.GetFiles()) //c#개발자가 만든 FileInfo 클래스에서 파일명/사이즈를 추출 및 저장 foreach (var fileInfo in info.GetFiles()) { File_Info file_info = new File_Info(); file_info.filename = fileInfo.Name; file_info.filesize = fileInfo.Length; file_list.Add(file_info); } //서버 생성 - 10000번 포트 사용 TcpListener listener = new TcpListener(11000); //클라이언트 연결 허용 listener.Start(); TcpClient client; NetworkStream net_stream; FileStream file_stream; byte[] datas = new byte[1024]; int data_size; BinaryFormatter formatter = new BinaryFormatter(); formatter.Binder = new AllowAllAssemblyVersionsDeserializationBinder(); //무한반복 - 여러 클라이언트 접속 처리용도 while (true) { //클라이언트 연결 client = listener.AcceptTcpClient(); net_stream = client.GetStream(); //반복 - 클라이언트가 연결을끊을때까지 for (; ;) { //파일목록을 저장한 변수를 클라이언트에게 송신 //List 객체를 네트워크로 송신할 수 없기때문에 //List객체를 배열로 바꿔 송신함 formatter.Serialize(net_stream, file_list.ToArray()); //클라이언트가 보낸 데이터 수신 - 기능선택 int select = (int)formatter.Deserialize(net_stream); //조건문 - 클라이언트가 요청한 기능을 처리 if (select > 0)//다운로드 요청 { //사용자관점의 번호 -> 인덱스번호 select--; //해당 인덱스에 있는 파일정보를 통해 파일 읽기모드로 접근 file_stream = File.OpenRead("./files/" + file_list[select].filename); //파일사이즈를 1024로 나눈만큼 반복 for (int i = 0; i < file_stream.Length / 1024f; i++) { //파일 읽기 및 네트워크에 송신 data_size = file_stream.Read(datas, 0, datas.Length); net_stream.Write(datas, 0, data_size); } //파일 닫기 file_stream.Close(); } else if (select == 0) //업로드 요청 { //업로드할 파일의 정보를 수신 - FIle_Info 객체 File_Info new_fileinfo = (File_Info)formatter.Deserialize(net_stream); //file_list 객체에 수신된 객체 추가 file_list.Add(new_fileinfo); //수신된 객체에 저장된 파일이름으로 파일 생성 file_stream = File.Create("./files/" + new_fileinfo.filename); //클라이언트가 보낸 파일데이터를 수신 및 파일에 쓰기 for (int i = 0; i < new_fileinfo.filesize / 1024f; i++) { data_size = net_stream.Read(datas, 0, datas.Length); file_stream.Write(datas, 0, data_size); } //파일 접근 종료 file_stream.Close(); } else // 연결종료 { break; } } net_stream.Close(); client.Close(); } /* * TcpClient client = listener.AcceptTcpClient(); * NetworkStream stream = client.GetStream(); * //파일 데이터를 저장할 파일스트림 객체 생성 * FileStream file_stream = File.Create("./download.txt"); * //수신받은 데이터를 파일스트림에 저장 * byte[] recv_data = new byte[1024]; * int recv_size = 0; * //클라이언트가 연결을 끊을때까지 수신할수있도록 반복 * while( ( recv_size = stream.Read(recv_data,0,recv_data.Length))> 0) * { * file_stream.Write(recv_data, 0, recv_size); * } * //파일 닫기 * file_stream.Close(); * * //클라이언트 연결 종료 * stream.Close(); * client.Close();*/ //서버 종료 listener.Stop(); }
void ViewRight(string path) { File_Info dInfo = new File_Info(); dInfo.SetPath(path); dInfo.Type = (int)PacketType.FILE_INFO; Packet.Serialize(dInfo).CopyTo(this.sendBuffer, 0); Send(); try { m_Stream.Read(readBuffer, 0, 1024 * 4); } catch { MessageBox.Show("디렉토리 읽기 에러"); return; } File_Info fInfo = (File_Info)Packet.Desserialize(readBuffer);//Desserialize console.Text = fInfo.GetPath() + "\r\n" + path; //console.Text = fInfo.di.FullName+"\r\n"+path; //DirectoryInfo di = fInfo.di;//디렉토리 정보 //DirectoryInfo[] diArray = fInfo.diArray;//하위디렉토리 //FileInfo[] fiArray = fInfo.fiArray; ListViewItem item; try { lvwFiles.Items.Clear(); foreach (DirectoryInfo di in fInfo.diArray) { item = lvwFiles.Items.Add(di.Name); item.SubItems.Add(""); item.SubItems.Add(di.LastWriteTime.ToString()); item.ImageIndex = (int)TREE_IMAGE.FOLDER; item.Tag = "D"; } foreach (FileInfo fi in fInfo.fiArray) { item = lvwFiles.Items.Add(fi.Name); item.SubItems.Add(fi.Length.ToString()); item.SubItems.Add(fi.LastWriteTime.ToString()); if (fi.Extension == ".avi" || fi.Extension == ".mp4") { item.ImageIndex = (int)TREE_IMAGE.VEDIO; } else if (fi.Extension == ".jpg" || fi.Extension == ".png") { item.ImageIndex = (int)TREE_IMAGE.IMAGE; } else if (fi.Extension == ".mp3" || fi.Extension == ".wav") { item.ImageIndex = (int)TREE_IMAGE.MUSIC; } else if (fi.Extension == ".txt") { item.ImageIndex = (int)TREE_IMAGE.TEXT; } else { item.ImageIndex = (int)TREE_IMAGE.OTHER; } item.Tag = "F"; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public bool Identify(File_Info fileInfo, Stream stream) { return(fileInfo.Extension == ".arc" && File.Exists(fileInfo.FilePath.Replace(".arc", ".dir"))); }