Вот один из способов сделать это ...
var dt = new DataTable();
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dt.Columns.Add(new DataColumn("Column3", typeof(string)));
var lines = File.ReadAllLines(@"c:\tabfile.txt");
foreach( string line in lines )
dt.Rows.Add(line.Split('\t'));
Во-первых, если вы ориентируетесь «только» на рынок Windows, очень легко предотвратить декомпиляцию «.class в .java»: используйте такой инструмент, как Excelsior Jet, который преобразует .jar в .exe .
Это надежно: невозможно вернуть файл .java, если вы используете Excelsior Jet (пока все люди говорят, что «невозможно предотвратить декомпиляцию .class файл "). Конечно, злоумышленник может запустить SoftIce и попытаться отследить ваш .exe , но это окажется немного сложнее, чем использование JAD для декомпиляции .class в .java , и это точно не позволит найти файл .java обратно.
Теперь, возможно, вы тоже ориентируетесь на OS X и Linux или у вас нет $$$, чтобы выкупить Excelsior Jet.
Я пишу коммерческое программное обеспечение, написанное на Java. Это программное обеспечение имеет смысл только при наличии подключения к Интернету. Следовательно, мы «защищаем» наше программное обеспечение, среди прочего, за счет того, что часть вычислений выполняется на стороне сервера: у нас есть несколько .class , которые не будут работать, если они не сгенерированы на стороне сервера, и мы отправлять их по сети (а то, что отправляется по сети, всегда разное: мы генерируем уникальные, одноразовые .class файлы на стороне сервера).
Для этого требуется подключение к Интернету, но если пользователю не нравится, как работает наше программное обеспечение, он может купить продукт худшего качества нашего конкурента;)
Декомпиляция не принесет много пользы: вам необходимо активно взламывать программное обеспечение ( т.е. воспроизвести то, что происходит на стороне сервера), иначе вы не сможете его использовать.
Мы используем нашу собственную «обфускацию строк» до Proguard. Мы также делаем инструментарий исходного кода (мы также могли бы сделать инструментирование байт-кода), где мы удаляем множество вещей из кода (например, "assert", которое мы закомментировали) и вводим некоторую случайную "обфускацию потока кода" [программное обеспечение может принимать разные пути, но дают один и тот же результат, это действительно затрудняет отслеживание программы]).
Затем мы используем Proguard (который является бесплатным), чтобы сгладить всю нашу объектно-ориентированную иерархию и скрыть уже запутанный код, поток и строку.
Итак, наш поток:
В дополнение к этому мы выпускаем очень регулярное (и автоматическое) обновление, которое всегда немного изменяет нашу схему защиты клиент / сервер (так что с каждым выпуском гипотетический злоумышленник должен начинать в основном с нуля).
Конечно, легче бросить полотенце и подумать: «Я ничего не могу сделать, чтобы усложнить жизнь злоумышленнику, потому что JAD может найти обратно.java файл в любом случае " (что более чем очень спорно и явно неверно в случае, когда вы используете конвертер .class в .exe для защиты вашего .class от декомпиляции).
Есть несколько методов:
все подробно обсуждается в моей статье Protect Your Java Code - Through Obfuscators And Beyond
Обфускатор (см. http://java-source.net/open-source/obfuscators) "зашифрует" код так, что он не будет иметь никакого смысла при де-компиляции.