문제

파일 이름을 저장할 수업을 만들고 있습니다. 그렇게하려면 어떤 캐릭터가 유효하지 않은지 정확히 알아야하고 정확히 어떤 문자가 유효하지 않은지 알아야합니다. 주요/후행 캐릭터로.

Windows 탐색기는 파일의 이름을 지정할 때 자동으로 흰색 공간 문자를 선도하고 뒤로 트림하므로 파일 이름 인스턴스를 구성 할 때 동일한 문자를 다듬어야합니다.

나는 String.trim ()을 사용하는 것에 대해 생각했지만, 트림 된 기본 문자 세트가 OS의 잘못된 선행/후행 파일 이름 문자와 정확히 일치한다고 가정하는 것은 순진합니다.

선적 서류 비치 string.trim ()의 경우, 기본적으로 다음 문자를 다듬는다 : u+0009, u+000a, u+000b, u+000c, u+000d, u+0020, u+0085, u+00a0, u+. 1680, U+2000, U+2001, U+2002, U+2003, U+2004, U+2005, U+2006, U+2007, U+2008, U+2009, U+200a, U+200b, U+2028, U+2029, U+3000, U+FEFF

불행히도, 위의 문자 중 일부는 System.io.path.getInvalidFilenamechars에서 반환 한 문자 세트에 있지 않기 때문에 파일에서 유효하지 않습니다.

그런 다음 해당 string.trim ()가 파일 이름에서 유효한 선행/후행 문자를 제거 할 수 있으므로 파일 이름을 손상시킬 수 있습니까?

Windows Vista OS의 파일 이름에 대한 유효하지 않은 선행/후행 문자는 정확히 무엇입니까? OS가 다른 파일 시스템에서 실행될 수 있기 때문에 파일 시스템 자체와 반드시 동일하지는 않다는 것을 이해합니다.

도움이 되었습니까?

해결책

그런 다음 해당 string.trim ()가 파일 이름에서 유효한 선행/후행 문자를 제거 할 수 있으므로 파일 이름을 손상시킬 수 있습니까?

예. 'X'가 유효한 파일 이름이고 'X'와 구별되는 Unix와 같은 시스템에서 더욱 그렇습니다.

다른 팁

파일 이름은 공간에서 시작/종료 될 수 있습니다. 트림은 그들을 제거합니다.

파일 이름에는 포함 할 수 없습니다

/ \ : * ? " | < >

이 코드는 파일을 실행하고 생성합니다.

Imports System.IO
Module Module1

Sub Main()
    Dim fs As New FileStream("d:\temp\   file . foo ", FileMode.Create, _
       FileAccess.Write)
    'declaring a FileStream and creating a word document file named file with
    'access mode of writing
    Dim s As New StreamWriter(fs)
    'creating a new StreamWriter and passing the filestream object fs as argument
    s.BaseStream.Seek(0, SeekOrigin.End)
    'the seek method is used to move the cursor to next position to avoid text to be
    'overwritten
    s.WriteLine("This is an example of using file handling concepts in VB .NET.")
    s.WriteLine("This concept is interesting.")
    'writing text to the newly created file
    s.Close()
End Sub

End Module

참고 : 위 코드로 생성 된 파일의 실제 이름은 "file. foo"인 것으로 보입니다. Explorer에서 파일 이름을 편집하면 공간이 없지만 위의 코드를 다시 실행하면 파일을 대체합니다.

참고 : 코드를 가져 왔습니다 http://www.startvbdotnet.com/files/default.aspx 공간을 추가했습니다

참고 : Vista의 Explorer Rename을 사용하면 파일 이름 전후에 공백을 추가 할 수 없으므로 해당 메소드를 사용하여 "foo. txt"를 만들 수 있지만 "foo. txt"를 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top